{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Project Solution - Goal 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we should look at what's in the file itself. Just a few records should be enough. (You can also \"cheat\" and look in Excel - but this works because the file is relatively small)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "file_name = 'nyc_parking_tickets_extract.csv'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Summons Number,Plate ID,Registration State,Plate Type,Issue Date,Violation Code,Vehicle Body Type,Vehicle Make,Violation Description\n",
      "\n",
      "4006478550,VAD7274,VA,PAS,10/5/2016,5,4D,BMW,BUS LANE VIOLATION\n",
      "\n",
      "4006462396,22834JK,NY,COM,9/30/2016,5,VAN,CHEVR,BUS LANE VIOLATION\n",
      "\n",
      "4007117810,21791MG,NY,COM,4/10/2017,5,VAN,DODGE,BUS LANE VIOLATION\n",
      "\n",
      "4006265037,FZX9232,NY,PAS,8/23/2016,5,SUBN,FORD,BUS LANE VIOLATION\n",
      "\n",
      "4006535600,N203399C,NY,OMT,10/19/2016,5,SUBN,FORD,BUS LANE VIOLATION\n",
      "\n",
      "4007156700,92163MG,NY,COM,4/13/2017,5,VAN,FRUEH,BUS LANE VIOLATION\n",
      "\n",
      "4006687989,MIQ600,SC,PAS,11/21/2016,5,VN,HONDA,BUS LANE VIOLATION\n",
      "\n",
      "4006943052,2AE3984,MD,PAS,2/1/2017,5,SW,LINCO,BUS LANE VIOLATION\n",
      "\n",
      "4007306795,HLG4926,NY,PAS,5/30/2017,5,SUBN,TOYOT,BUS LANE VIOLATION\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open(file_name) as f:\n",
    "    for _ in range(10):\n",
    "        print(next(f))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So we should notice that we have these `\\n` line terminators in the file - we'll need to strip those out.\n",
    "\n",
    "Secondly we see that the first row of the file are the column headers - we'll need to skip that line when we want to look at just the data.\n",
    "\n",
    "We should also not make the assumption that the data is entirely clean - we probably have missing values and will need to deal with that accordingly.\n",
    "\n",
    "We also will need to determine an appropriatre data type for every column in the data set."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Column Definitions and Named Tuple"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start with the column definitions, data types and named tuple."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with open(file_name) as f:\n",
    "    column_headers = next(f).strip('\\n').split(',')\n",
    "    sample_data = next(f).strip('\\n').split(',')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Summons Number',\n",
       " 'Plate ID',\n",
       " 'Registration State',\n",
       " 'Plate Type',\n",
       " 'Issue Date',\n",
       " 'Violation Code',\n",
       " 'Vehicle Body Type',\n",
       " 'Vehicle Make',\n",
       " 'Violation Description']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "column_headers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['4006478550',\n",
       " 'VAD7274',\n",
       " 'VA',\n",
       " 'PAS',\n",
       " '10/5/2016',\n",
       " '5',\n",
       " '4D',\n",
       " 'BMW',\n",
       " 'BUS LANE VIOLATION']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('Summons Number', '4006478550'),\n",
       " ('Plate ID', 'VAD7274'),\n",
       " ('Registration State', 'VA'),\n",
       " ('Plate Type', 'PAS'),\n",
       " ('Issue Date', '10/5/2016'),\n",
       " ('Violation Code', '5'),\n",
       " ('Vehicle Body Type', '4D'),\n",
       " ('Vehicle Make', 'BMW'),\n",
       " ('Violation Description', 'BUS LANE VIOLATION')]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(zip(column_headers, sample_data))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start by creating a tuple that contains the names of the columns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "column_names = [header.replace(' ', '_').lower() \n",
    "                for header in column_headers]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['summons_number',\n",
       " 'plate_id',\n",
       " 'registration_state',\n",
       " 'plate_type',\n",
       " 'issue_date',\n",
       " 'violation_code',\n",
       " 'vehicle_body_type',\n",
       " 'vehicle_make',\n",
       " 'violation_description']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "column_names"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we need to determine the data types for each of these fields:\n",
    "\n",
    "    0. summons_number: looks like integers\n",
    "    1. plate_id: string\n",
    "    2: registration_state: string\n",
    "    3: plate_type: string\n",
    "    4: issue_date: looks like valid dates\n",
    "    5: violation_code: looks like integers\n",
    "    6: vehicle_body_type: string\n",
    "    7: vehicle_make: string\n",
    "    8: violation_description: string\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll create utility functions to cast the data (which will always be strings) into the appropriate data type for each field.\n",
    "\n",
    "We have to be careful though, we may have issues with data integrity and our assumptions about the data type.\n",
    "\n",
    "What we'll do as a first pass is to keep track of the rows where the data was not an integer or date when we expected it (or missing)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create our named tuple data structure:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from collections import namedtuple\n",
    "\n",
    "Ticket = namedtuple('Ticket', column_names)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Reading and Cleaning a data row"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with open(file_name) as f:\n",
    "    next(f)\n",
    "    raw_data_row = next(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'4006478550,VAD7274,VA,PAS,10/5/2016,5,4D,BMW,BUS LANE VIOLATION\\n'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "raw_data_row"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You'll notice that to read the data in the file, we have to skip the first row in the file. Also, I have to use a `with` statement and the file name every time. To make life easier, I'm going to write a small utility function that will yield just the data rows from the file:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def read_data():\n",
    "    with open(file_name) as f:\n",
    "        next(f)\n",
    "        yield from f"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can test it out easily:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4006478550,VAD7274,VA,PAS,10/5/2016,5,4D,BMW,BUS LANE VIOLATION\n",
      "\n",
      "4006462396,22834JK,NY,COM,9/30/2016,5,VAN,CHEVR,BUS LANE VIOLATION\n",
      "\n",
      "4007117810,21791MG,NY,COM,4/10/2017,5,VAN,DODGE,BUS LANE VIOLATION\n",
      "\n",
      "4006265037,FZX9232,NY,PAS,8/23/2016,5,SUBN,FORD,BUS LANE VIOLATION\n",
      "\n",
      "4006535600,N203399C,NY,OMT,10/19/2016,5,SUBN,FORD,BUS LANE VIOLATION\n",
      "\n"
     ]
    }
   ],
   "source": [
    "raw_data = read_data()\n",
    "for _ in range(5):\n",
    "    print(next(raw_data))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's write a function that will try to convert a value to an integer, or return some default if the value is missing or not an integer:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def parse_int(value, *, default=None):\n",
    "    try:\n",
    "        return int(value)\n",
    "    except ValueError:\n",
    "        return default"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We need to do the same thing with dates.\n",
    "It looks like the dates are provided in M/D/YYYY format, so we'll use that to parse the date. \n",
    "\n",
    "We'll use the `strptime` function available in the `datetime` package."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from datetime import datetime\n",
    "def parse_date(value, *, default=None):\n",
    "    date_format='%m/%d/%Y'\n",
    "    try:\n",
    "        return datetime.strptime(value, date_format).date()\n",
    "    except ValueError:\n",
    "        return default"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's make sure those functions work as expected:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "123"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse_int('123')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'N/A'"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse_int('hello', default='N/A')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.date(2018, 3, 28)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse_date('3/28/2018')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'N/A'"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse_date('31/31/2000', default='N/A')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "OK, so these seem to work as expected.\n",
    "\n",
    "We also need to write a string parser - we want to remove any potential leading and trailing spaces."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def parse_string(value, *, default=None):\n",
    "    try:\n",
    "        cleaned = str(value).strip()\n",
    "        if not cleaned:\n",
    "            # empty string\n",
    "            return default\n",
    "        else:\n",
    "            return cleaned\n",
    "    except ValueError:\n",
    "        return default"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's test this one as well:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'hello'"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse_string('   hello   ')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'N/A'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse_string('  ', default='N/A')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have our utility functions, we can write our row parser.\n",
    "\n",
    "To make life easier, I'm going to create a tuple that contains the functions that should be called to clean up each field. The tuple positions will correspond to the fields in the data row.\n",
    "\n",
    "I'm also going to specify what the default value should be when there is a problem parsing the fields. To do this, I will use `partials`, because I still need a callable for each element of the column parser tuple. (Note that I could just as easily use a lambda as well instead of partials)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from functools import partial"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['summons_number',\n",
       " 'plate_id',\n",
       " 'registration_state',\n",
       " 'plate_type',\n",
       " 'issue_date',\n",
       " 'violation_code',\n",
       " 'vehicle_body_type',\n",
       " 'vehicle_make',\n",
       " 'violation_description']"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "column_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "column_parsers = (parse_int,  # summons_number, default is None\n",
    "                  parse_string,  # plate_id, default is None\n",
    "                  partial(parse_string, default=''),  # state\n",
    "                  partial(parse_string, default=''),  # plate_type\n",
    "                  parse_date,  # issue_date, default is None\n",
    "                  parse_int,  # violation_code\n",
    "                  partial(parse_string, default=''),  # body type\n",
    "                  parse_string,  # make, default is None\n",
    "                  lambda x: parse_string(x, default='')  # description\n",
    "                 )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To parse each field in a row, I'll first separate the data fields into a list of values, then I'll apply the functions in `column_parsers` to the data in that list. \n",
    "\n",
    "To do that, I'm going to zip up the parser functions and the data, and use a comprehension to apply each function to its corresponding data field:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def parse_row(row):\n",
    "    fields = row.strip('\\n').split(',')\n",
    "    parsed_data = (func(field) \n",
    "                   for func, field in zip(column_parsers, fields))\n",
    "    return parsed_data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is not quite what we want yet, but let's test it out and make sure it does what we expect:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4006478550, 'VAD7274', 'VA', 'PAS', datetime.date(2016, 10, 5), 5, '4D', 'BMW', 'BUS LANE VIOLATION']\n",
      "[4006462396, '22834JK', 'NY', 'COM', datetime.date(2016, 9, 30), 5, 'VAN', 'CHEVR', 'BUS LANE VIOLATION']\n",
      "[4007117810, '21791MG', 'NY', 'COM', datetime.date(2017, 4, 10), 5, 'VAN', 'DODGE', 'BUS LANE VIOLATION']\n",
      "[4006265037, 'FZX9232', 'NY', 'PAS', datetime.date(2016, 8, 23), 5, 'SUBN', 'FORD', 'BUS LANE VIOLATION']\n",
      "[4006535600, 'N203399C', 'NY', 'OMT', datetime.date(2016, 10, 19), 5, 'SUBN', 'FORD', 'BUS LANE VIOLATION']\n"
     ]
    }
   ],
   "source": [
    "rows = read_data()\n",
    "for _ in range(5):\n",
    "    row = next(rows)\n",
    "    parsed_data = parse_row(row)\n",
    "    print(list(parsed_data))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's finish up the row parser.\n",
    "\n",
    "First I want it to return a named tuple instead of a plain iterator.\n",
    "\n",
    "Also, the way I have set up the parsers, I only want to look at data where none of the fields are `None` - that's why I had some fields default to an empty string instead of `None` - those are the ones I still want to retain, even if they are empty.\n",
    "\n",
    "To do this efficiently, I'm going to use `all`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's just quickly recall how `all` works:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all([10, 'hello'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all([None, 'hello'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But we have to watch out, since we are allowing empty strings in our valid data, we cannot simply use `all`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all([10, ''])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That's because empty strings are falsy. So, we need to tweak this slightly.\n",
    "\n",
    "I'll use a generator expression for this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l = [10, '', 0]\n",
    "all(item is not None for item in l)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l = [10, '', 0, None]\n",
    "all(item is not None for item in l)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So, now let's finish up our row parser. We'll return a Ticket named tuple if none of the parsed fields are `None`, and we'll allow the user to specify a default otherwise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def parse_row(row, *, default=None):\n",
    "    fields = row.strip('\\n').split(',')\n",
    "    # note that I'm using a list comprehension here, \n",
    "    # since we'll need to iterate through the entire parsed fields\n",
    "    # twice - one time to check if nothing is None\n",
    "    # and another time to create the named tuple\n",
    "    parsed_data = [func(field) \n",
    "                   for func, field in zip(column_parsers, fields)]\n",
    "    if all(item is not None for item in parsed_data):\n",
    "        print(*parsed_data)\n",
    "        return Ticket(*parsed_data)\n",
    "    else:\n",
    "        return default"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's test it out again:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4006478550 VAD7274 VA PAS 2016-10-05 5 4D BMW BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006478550, plate_id='VAD7274', registration_state='VA', plate_type='PAS', issue_date=datetime.date(2016, 10, 5), violation_code=5, vehicle_body_type='4D', vehicle_make='BMW', violation_description='BUS LANE VIOLATION')\n",
      "4006462396 22834JK NY COM 2016-09-30 5 VAN CHEVR BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006462396, plate_id='22834JK', registration_state='NY', plate_type='COM', issue_date=datetime.date(2016, 9, 30), violation_code=5, vehicle_body_type='VAN', vehicle_make='CHEVR', violation_description='BUS LANE VIOLATION')\n",
      "4007117810 21791MG NY COM 2017-04-10 5 VAN DODGE BUS LANE VIOLATION\n",
      "Ticket(summons_number=4007117810, plate_id='21791MG', registration_state='NY', plate_type='COM', issue_date=datetime.date(2017, 4, 10), violation_code=5, vehicle_body_type='VAN', vehicle_make='DODGE', violation_description='BUS LANE VIOLATION')\n",
      "4006265037 FZX9232 NY PAS 2016-08-23 5 SUBN FORD BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006265037, plate_id='FZX9232', registration_state='NY', plate_type='PAS', issue_date=datetime.date(2016, 8, 23), violation_code=5, vehicle_body_type='SUBN', vehicle_make='FORD', violation_description='BUS LANE VIOLATION')\n",
      "4006535600 N203399C NY OMT 2016-10-19 5 SUBN FORD BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006535600, plate_id='N203399C', registration_state='NY', plate_type='OMT', issue_date=datetime.date(2016, 10, 19), violation_code=5, vehicle_body_type='SUBN', vehicle_make='FORD', violation_description='BUS LANE VIOLATION')\n"
     ]
    }
   ],
   "source": [
    "rows = read_data()\n",
    "for _ in range(5):\n",
    "    row = next(rows)\n",
    "    parsed_data = parse_row(row)\n",
    "    print(parsed_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Checking What Rows are Missing Required Values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's quickly run through the file and see what data issues we might have - maybe our assumptions were incorrect about the various data types."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4006478550 VAD7274 VA PAS 2016-10-05 5 4D BMW BUS LANE VIOLATION\n",
      "4006462396 22834JK NY COM 2016-09-30 5 VAN CHEVR BUS LANE VIOLATION\n",
      "4007117810 21791MG NY COM 2017-04-10 5 VAN DODGE BUS LANE VIOLATION\n",
      "4006265037 FZX9232 NY PAS 2016-08-23 5 SUBN FORD BUS LANE VIOLATION\n",
      "4006535600 N203399C NY OMT 2016-10-19 5 SUBN FORD BUS LANE VIOLATION\n",
      "4007156700 92163MG NY COM 2017-04-13 5 VAN FRUEH BUS LANE VIOLATION\n",
      "4006687989 MIQ600 SC PAS 2016-11-21 5 VN HONDA BUS LANE VIOLATION\n",
      "4006943052 2AE3984 MD PAS 2017-02-01 5 SW LINCO BUS LANE VIOLATION\n",
      "4007306795 HLG4926 NY PAS 2017-05-30 5 SUBN TOYOT BUS LANE VIOLATION\n",
      "4007124590 T715907C NY OMT 2017-04-03 5 SUBN TOYOT BUS LANE VIOLATION\n",
      "5096061966 HRC9475 NY PAS 2017-04-18 7 SUBN CADIL FAILURE TO STOP AT RED LIGHT\n",
      "5094070400 DYP8042 NY PAS 2016-10-26 7 SUBN CHEVR FAILURE TO STOP AT RED LIGHT\n",
      "5094906770 G30ESY NJ PAS 2017-01-01 7 WAGO CHRYS FAILURE TO STOP AT RED LIGHT\n",
      "5093319363 GGT8868 NY PAS 2016-09-06 7 SUBN CHRYS FAILURE TO STOP AT RED LIGHT\n",
      "5092638849 107DDD NY SPO 2016-07-20 7 SUBN DODGE FAILURE TO STOP AT RED LIGHT\n",
      "5093455337 ENQT55 FL PAS 2016-09-12 7 VN DODGE FAILURE TO STOP AT RED LIGHT\n",
      "5094961366 GSU4156 OH PAS 2017-01-07 7 4S DODGE FAILURE TO STOP AT RED LIGHT\n",
      "5092906534 V84FXV NJ PAS 2016-08-07 7 WAGO FIR FAILURE TO STOP AT RED LIGHT\n",
      "5093620865 AD80228 AZ PAS 2016-09-24 7 TK FORD FAILURE TO STOP AT RED LIGHT\n",
      "5092733548 EVX4041 NY PAS 2016-07-26 7 SUBN FORD FAILURE TO STOP AT RED LIGHT\n",
      "5095995530 EMK5934 NY PAS 2017-04-13 7 VAN GMC FAILURE TO STOP AT RED LIGHT\n",
      "5092750364 DPH8955 NY PAS 2016-07-27 7 SUBN HONDA FAILURE TO STOP AT RED LIGHT\n",
      "5094658001 GCF1897 NY PAS 2016-12-10 7 4DSD HONDA FAILURE TO STOP AT RED LIGHT\n",
      "5092833786 HCS9434 NY PAS 2016-08-03 7 SUBN HONDA FAILURE TO STOP AT RED LIGHT\n",
      "5096484040 HHS1641 NY PAS 2017-05-17 7 SUBN HONDA FAILURE TO STOP AT RED LIGHT\n",
      "5095797586 KHE1889 PA PAS 2017-03-28 7 SDN HONDA FAILURE TO STOP AT RED LIGHT\n",
      "5095799807 VES2440 VA PAS 2017-03-29 7 VAN HONDA FAILURE TO STOP AT RED LIGHT\n",
      "5093533919 CYU4598 NY PAS 2016-09-16 7 SUBN HYUND FAILURE TO STOP AT RED LIGHT\n",
      "5093399735 DZGT24 FL PAS 2016-09-04 7 UT HYUND FAILURE TO STOP AT RED LIGHT\n",
      "5094058873 GRN3101 NY PAS 2016-10-29 7 4DSD HYUND FAILURE TO STOP AT RED LIGHT\n",
      "5094770986 T668962C NY OMT 2016-12-19 7 4DSD HYUND FAILURE TO STOP AT RED LIGHT\n",
      "5093895611 GVZ1407 NY PAS 2016-10-14 7 4DSD JAGUA FAILURE TO STOP AT RED LIGHT\n",
      "5094185792 AGM9013 NY PAS 2016-11-04 7 SUBN JEEP FAILURE TO STOP AT RED LIGHT\n",
      "5092708219 F47DZF NJ PAS 2016-07-24 7 4 DR JEEP FAILURE TO STOP AT RED LIGHT\n",
      "5094759954 GLB8157 NY PAS 2016-12-19 7 SUBN JEEP FAILURE TO STOP AT RED LIGHT\n",
      "5093891046 FJS4033 NY PAS 2016-10-14 7 4DSD LEXUS FAILURE TO STOP AT RED LIGHT\n",
      "5093527853 GYM9809 NY PAS 2016-09-21 7 4DSD LEXUS FAILURE TO STOP AT RED LIGHT\n",
      "5096683886 HCS4873 NY PAS 2017-05-18 7 4DSD LEXUS FAILURE TO STOP AT RED LIGHT\n",
      "5096917368 FZD8593 NY PAS 2017-06-13 7 SUBN ME/BE FAILURE TO STOP AT RED LIGHT\n",
      "5094893737 GER1584 NY PAS 2016-12-31 7 4DSD ME/BE FAILURE TO STOP AT RED LIGHT\n",
      "5096249300 HEM8411 NY PAS 2017-05-01 7 4DSD ME/BE FAILURE TO STOP AT RED LIGHT\n",
      "5096958772 165TRX CT PAS 2017-06-16 7 4W MERCU FAILURE TO STOP AT RED LIGHT\n",
      "5093703217 HFG4313 NY PAS 2016-09-30 7 4DSD MITSU FAILURE TO STOP AT RED LIGHT\n",
      "5094670736 AXU4790 NY PAS 2016-12-11 7 4DSD NISSA FAILURE TO STOP AT RED LIGHT\n",
      "5094094166 CZM4111 NY PAS 2016-10-28 7 4DSD TOYOT FAILURE TO STOP AT RED LIGHT\n",
      "5096723768 EDN2797 NY PAS 2017-06-02 7 4DSD TOYOT FAILURE TO STOP AT RED LIGHT\n",
      "5093209120 FZT5005 NY PAS 2016-08-28 7 4DSD TOYOT FAILURE TO STOP AT RED LIGHT\n",
      "5092469481 GZH7067 NY PAS 2016-07-10 7 SUBN TOYOT FAILURE TO STOP AT RED LIGHT\n",
      "5092451658 GZH7067 NY PAS 2016-07-08 7 SUBN TOYOT FAILURE TO STOP AT RED LIGHT\n",
      "5095356545 GZM8254 NY OMS 2017-02-18 7 SUBN TOYOT FAILURE TO STOP AT RED LIGHT\n",
      "8410006650 D53AUUN NJ PAS 2016-10-21 9 4DSD LEXUS 09-Blocking the Box\n",
      "8534116519 CES6482 NY PAS 2017-06-12 9 SUBN TOYOT 09-Blocking the Box\n",
      "8485674984 T713160C NY OMT 2017-06-13 9 SUBN TOYOT 09-Blocking the Box\n",
      "8556557405 59622JW NY COM 2017-06-09 10 VAN FORD 10-No Stopping\n",
      "8071038416 AM479F NJ PAS 2016-07-07 10 DELV FRUEH 10-No Stopping\n",
      "8483087236 76822MH NY COM 2017-05-19 10 DELV HIN 10-No Stopping\n",
      "8481125088 55179ME NY COM 2017-04-10 10 DELV NS/OT 10-No Stopping\n",
      "8506822300 55106MB NY COM 2017-05-31 10 VAN WORKH 10-No Stopping\n",
      "8482331425 86609MB NY COM 2017-06-18 13 VAN CHEVR 13-No Stand (taxi stand)\n",
      "8028246722 T703619C NY OMT 2016-09-15 13 SUBN CHEVR 13-No Stand (taxi stand)\n",
      "8378547530 FWZ8815 NY PAS 2017-01-11 14 2DSD ACURA 14-No Standing\n",
      "8489750210 6DQT356 CA PAS 2016-11-28 14 4DSD AUDI 14-No Standing\n",
      "1410726095 DEP4792 NC PAS 2016-07-15 14  BMW \n",
      "8421031235 GGA4266 NY PAS 2016-10-18 14 4DSD BMW 14-No Standing\n",
      "7730553259 DLZ8901 NY PAS 2016-09-26 14 SUBN CHEVR 14-No Standing\n",
      "8498520046 HKF6916 NY PAS 2017-04-27 14 SUBN CHEVR 14-No Standing\n",
      "8537807813 HNF6718 NY PAS 2017-04-21 14 SUBN CHEVR 14-No Standing\n",
      "8083571465 KCG9559 PA PAS 2016-12-22 14 SUBN CHEVR 14-No Standing\n",
      "7536689184 ZCL5723 PA PAS 2017-01-26 14 VAN CHEVR 14-No Standing\n",
      "8480505680 HCT2134 NY PAS 2017-01-18 14 SUBN CHRYS 14-No Standing\n",
      "8481973580 28693MH NY COM 2017-06-13 14 VAN DODGE 14-No Standing\n",
      "8460500214 30408MC NY COM 2016-08-04 14 PICK DODGE 14-No Standing\n",
      "8482817036 50501JT NY COM 2017-04-11 14 VAN DODGE 14-No Standing\n",
      "8117027999 83317ME NY COM 2016-09-27 14 VAN DODGE 14-No Standing\n",
      "8488121532 FLX2674 NY PAS 2017-04-05 14 2DSD DODGE 14-No Standing\n",
      "8543952980 FSZ8671 NY PAS 2017-04-21 14 SUBN DODGE 14-No Standing\n",
      "8501806912 KGP1166 PA PAS 2017-06-04 14 VAN DODGE 14-No Standing\n",
      "8107542976 11AH74 MA PAS 2017-01-29 14 4DSD FORD 14-No Standing\n",
      "8564650320 29222MK NY COM 2017-05-05 14 VAN FORD 14-No Standing\n",
      "8010367576 30661MA NY COM 2016-12-22 14 VAN FORD 14-No Standing\n",
      "8505159536 41795JX NY COM 2017-03-09 14 VAN FORD 14-No Standing\n",
      "7813887440 44267JZ NY COM 2016-08-12 14 VAN FORD 14-No Standing\n",
      "8440509546 49317JX NY COM 2016-10-29 14 VAN FORD 14-No Standing\n",
      "1408575656 6XWZ969 CA PAS 2016-07-06 14 SDN FORD \n",
      "8516853275 72100MH NY COM 2017-04-12 14 VAN FORD 14-No Standing\n",
      "7059924103 91878MB NY COM 2016-10-12 14 VAN FORD 14-No Standing\n",
      "8170085561 ENM3708 NY PAS 2017-02-10 14 SUBN FORD 14-No Standing\n",
      "8527511113 F70GEP NJ PAS 2017-05-01 14 SUBN FORD 14-No Standing\n",
      "8511453696 FSY6987 NY PAS 2017-03-13 14 SUBN FORD 14-No Standing\n",
      "1413745933 HCC2829 NY PAS 2016-08-22 14 VAN FORD \n",
      "8484882226 S25DSK NJ PAS 2017-06-08 14 PICK FORD 14-No Standing\n",
      "8524054499 ZRK24R NJ PAS 2017-03-18 14 SUBN FORD 14-No Standing\n",
      "1423945281 2240653 IN PAS 2017-05-13 14  FRUEH \n",
      "8577650820 10632JU NY COM 2017-06-20 14 UTIL FRUEH 14-No Standing\n",
      "7056662882 83038ME NY COM 2016-09-21 14 VAN FRUEH 14-No Standing\n",
      "8324025510 83146ME NY COM 2016-10-27 14 VAN FRUEH 14-No Standing\n",
      "8286541110 85846MD NY COM 2016-10-25 14 VAN FRUEH 14-No Standing\n",
      "8270548250 91028MJ NY COM 2016-12-13 14 DELV FRUEH 14-No Standing\n",
      "8480520395 99886MC NY COM 2017-06-19 14 VAN FRUEH 14-No Standing\n",
      "8496410791 AP338E NJ PAS 2017-05-17 14 TRAC FRUEH 14-No Standing\n",
      "8530950458 HAY5880 NY PAS 2017-04-08 14 SUBN GMC 14-No Standing\n",
      "8552003569 XJ275S NJ PAS 2017-04-25 14 PICK GMC 14-No Standing\n",
      "8536010903 25472MG NY COM 2017-06-16 14 REFG HIN 14-No Standing\n",
      "8508953549 XDLS80 NJ PAS 2017-02-01 14 DELV HIN 14-No Standing\n",
      "7191990831 AA00234 CT PAS 2016-07-02 14 SUBN HONDA 14-No Standing\n",
      "8519503676 FCX7311 NY PAS 2017-03-20 14 SUBN HONDA 14-No Standing\n",
      "1418739704 GJK5307 NY PAS 2017-04-09 14 SDN HONDA \n",
      "7994359840 GNG1097 TX PAS 2016-07-15 14 SUBN HONDA 14-No Standing\n",
      "1414856374 HLE9929 NY PAS 2017-04-13 14 SUBN HONDA \n",
      "8474909971 S938464 IA PAS 2017-01-09 14 SUBN HONDA 14-No Standing\n",
      "1416903379 CRM6911 NY PAS 2016-12-16 14 SDN HYUND \n",
      "8340512559 CZB9676 NY PAS 2016-08-23 14 2DSD HYUND 14-No Standing\n",
      "8497566683 17596JE NY COM 2017-06-16 14 DELV INTER 14-No Standing\n",
      "8517821075 32295MA NY COM 2017-06-27 14 DELV INTER 14-No Standing\n",
      "1418035762 62935JM NY COM 2017-01-24 14 DELV INTER \n",
      "8482055392 92638JU NY COM 2017-01-25 14 VAN INTER 14-No Standing\n",
      "8506706490 AP166T NJ PAS 2017-02-20 14 DELV INTER 14-No Standing\n",
      "8473761297 33049MJ NY COM 2017-02-01 14 DELV ISUZU 14-No Standing\n",
      "8484877693 XBYG52 NJ PAS 2017-05-12 14 VAN ISUZU 14-No Standing\n",
      "8152046917 VFW9441 VA PAS 2016-08-14 14 SUBN JEEP 14-No Standing\n",
      "8503265503 23800TC NY TRC 2017-03-28 14 TRAC KENWO 14-No Standing\n",
      "8489721312 49734MA NY COM 2017-04-04 14 DELV KENWO 14-No Standing\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8464532088 HJR5750 NY PAS 2017-02-03 14 SUBN KIA 14-No Standing\n",
      "8488825948 HAU1278 NY PAS 2017-03-31 14 SUBN LEXUS 14-No Standing\n",
      "8559362496 HLW7798 NY PAS 2017-06-13 14 4DSD LEXUS 14-No Standing\n",
      "8478353860 VUE95C NJ PAS 2016-12-06 14 4DSD LEXUS 14-No Standing\n",
      "8518911631 ZD53LE NJ PAS 2017-05-17 14 SUBN LEXUS 14-No Standing\n",
      "1416091415 75213MH NY COM 2016-11-28 14 VAN ME/BE \n",
      "8482374059 F96FBF NJ PAS 2017-04-23 14 4DSD ME/BE 14-No Standing\n",
      "8544960947 HMX8950 NY PAS 2017-05-27 14 4DSD ME/BE 14-No Standing\n",
      "1418609274 8P82H NY OMT 2016-12-21 14 TAXI NISSA \n",
      "1417565895 HEB8184 NY PAS 2017-02-11 14 SDN NISSA \n",
      "8155550278 W56GSE NJ PAS 2016-10-22 14 4DSD NISSA 14-No Standing\n",
      "7433187960 2330830 ME PAS 2017-03-06 14 TRLR NS/OT 14-No Standing\n",
      "7645052715 FRZ3573 NY PAS 2017-01-07 14 SUBN NS/OT 14-No Standing\n",
      "7922559173 XCYU94 NJ PAS 2016-10-24 14 VAN NS/OT 14-No Standing\n",
      "7767415582 XW915N NJ PAS 2017-03-29 14 DELV NS/OT 14-No Standing\n",
      "8524350581 HGR5953 NY PAS 2017-02-27 14 4DSD OLDSM 14-No Standing\n",
      "7499844705 GGT7948 NY PAS 2016-08-22 14 SUBN SUBAR 14-No Standing\n",
      "7150327266 HWE6388 PA PAS 2016-08-05 14 SUBN SUBAR 14-No Standing\n",
      "8537603818 ASG8770 NY PAS 2017-03-26 14 4DSD TOYOT 14-No Standing\n",
      "8210533952 GST8679 NY PAS 2016-11-21 14 2DSD TOYOT 14-No Standing\n",
      "8555462198 HKT4222 NY PAS 2017-06-12 14 SUBN TOYOT 14-No Standing\n",
      "1404838156 R57AAE NJ PAS 2017-04-29 14 SUBN TOYOT \n",
      "8527806162 T659832C NY OMT 2017-06-04 14 4DSD TOYOT 14-No Standing\n",
      "8513520615 77026MG NY COM 2017-05-31 14 TRAC VOLVO 14-No Standing\n",
      "8251031485 HJP5565 NY PAS 2016-10-04 16 4DSD CHEVR 16A-No Std (Com Veh) Non-COM\n",
      "7813745231 GEL1890 NY PAS 2016-09-19 16 SUBN CHRYS 16A-No Std (Com Veh) Non-COM\n",
      "8444534183 36598MH NY COM 2016-11-23 16 VAN DODGE 16-No Std (Com Veh) Com Plate\n",
      "8061037749 HFG7121 NY PAS 2016-08-22 16 SUBN DODGE 16A-No Std (Com Veh) Non-COM\n",
      "8250539527 24745ME NY COM 2016-11-09 16 VAN FORD 16-No Std (Com Veh) Com Plate\n",
      "8308520170 49033ME NY COM 2016-07-14 16 VAN FORD 16-No Std (Com Veh) Com Plate\n",
      "8504915323 57011ME NY COM 2017-04-06 16 SUBN FORD 16-No Std (Com Veh) Com Plate\n",
      "8339536023 XCEG93 NJ PAS 2016-09-15 16 VAN FORD 16-No Std (Com Veh) Com Plate\n",
      "8566405183 GJD5585 NY PAS 2017-06-01 16 4DSD ME/BE 16A-No Std (Com Veh) Non-COM\n",
      "7051225662 N61GZN NJ PAS 2016-11-25 16 SUBN SATUR 16A-No Std (Com Veh) Non-COM\n",
      "8149510126 GTP8988 NY PAS 2016-08-10 16 2DSD SMART 16A-No Std (Com Veh) Non-COM\n",
      "7052028463 HGM9782 NY PAS 2017-01-30 16 SUBN TOYOT 16A-No Std (Com Veh) Non-COM\n",
      "8474913706 T674455C NY OMT 2017-02-08 16 4DSD TOYOT 16A-No Std (Com Veh) Non-COM\n",
      "8506607206 18752MH NY COM 2017-03-16 17 VAN CHEVR 17-No Stand (exc auth veh)\n",
      "8438519763 89882JV NY COM 2016-10-13 17 VAN GMC 17-No Stand (exc auth veh)\n",
      "8551111954 GCE9214 NY PAS 2017-06-25 17 4DSD HONDA 17-No Stand (exc auth veh)\n",
      "8516654059 AP169V NJ PAS 2017-02-22 18 DELV INTER 18-No Stand (bus lane)\n",
      "1368119141 BMLV150 ON PAS 2016-07-16 19 SUBN CHEVR \n",
      "8528274184 EKF9820 NY PAS 2017-05-01 19 SUBN CHEVR 19-No Stand (bus stop)\n",
      "8522350073 83290MD NY COM 2017-02-24 19 SUBN DODGE 19-No Stand (bus stop)\n",
      "8070097437 T62GJP NJ PAS 2016-09-18 19 PICK DODGE 19-No Stand (bus stop)\n",
      "8509409523 35050JU NY COM 2017-02-24 19 PICK FORD 19-No Stand (bus stop)\n",
      "1413553552 41126BB NY OMT 2016-07-28 19 VAN FORD \n",
      "8514220482 2588073 IN PAS 2017-05-29 19 DELV FRUEH 19-No Stand (bus stop)\n",
      "8485652319 0480PRA MN PAS 2017-01-26 19 DELV FRUEH 19-No Stand (bus stop)\n",
      "7014671406 B0951V FL PAS 2016-09-07 19 DELV FRUEH 19-No Stand (bus stop)\n",
      "1422732710 GMK4592 NY PAS 2017-06-19 19 SDN HONDA \n",
      "7249114220 GPP7413 NY PAS 2016-10-08 19 SUBN HONDA 19-No Stand (bus stop)\n",
      "7499990163 HKT3209 NY PAS 2016-12-13 19 SUBN HONDA 19-No Stand (bus stop)\n",
      "8491667738 JPC4516 PA PAS 2017-03-01 19 4DSD INFIN 19-No Stand (bus stop)\n",
      "8302046280 63444JM NY COM 2017-01-26 19 VAN INTER 19-No Stand (bus stop)\n",
      "8009901763 13657MD NY COM 2016-09-27 19 DELV KENWO 19-No Stand (bus stop)\n",
      "1424024420 HPD1970 NY PAS 2017-06-10 19 SDN KIA \n",
      "8511718990 50104MH NY COM 2017-06-09 19 VAN ME/BE 19-No Stand (bus stop)\n",
      "1415429522 17236MH NY COM 2017-03-03 19 SUBN MITSU \n",
      "8476355312 47829MD NY COM 2017-02-14 19 DELV PETER 19-No Stand (bus stop)\n",
      "1406918726 5M39B NY OMT 2016-07-13 19 TAXI TOYOT \n",
      "7241990262 DVA1919 NY PAS 2016-11-16 19 SUBN TOYOT 19-No Stand (bus stop)\n",
      "8330511935 HBY7509 NY PAS 2016-07-30 19 4DSD TOYOT 19-No Stand (bus stop)\n",
      "1423536058 HCS2336 NY PAS 2017-01-27 19 SUBN TOYOT \n",
      "8519016595 QU655 RI PAS 2017-06-12 19 4DSD TOYOT 19-No Stand (bus stop)\n",
      "8530522310 T640396C NY OMT 2017-05-27 19 4DSD TOYOT 19-No Stand (bus stop)\n",
      "[('summons_number', '1413358512'), ('plate_id', '54295PC'), ('registration_state', 'NY'), ('plate_type', 'APP'), ('issue_date', '8/9/2016'), ('violation_code', '19'), ('vehicle_body_type', 'BUS'), ('vehicle_make', ''), ('violation_description', '')]\n",
      "\n",
      "8269048434 CDPE57 FL PAS 2016-08-21 20 4DSD ACURA 20A-No Parking (Non-COM)\n",
      "7036998684 VML8110 VA PAS 2017-02-21 20 4DSD BMW 20A-No Parking (Non-COM)\n",
      "8515215408 HFB1731 NY PAS 2017-04-14 20 SUBN CADIL 20A-No Parking (Non-COM)\n",
      "8470607042 MYSUMMER NY OMT 2016-07-27 20 SUBN CADIL 20A-No Parking (Non-COM)\n",
      "1371960501 FEP2455 NY PAS 2016-07-18 20 SUBN CHEVR \n",
      "8550963045 GSU8031 NY PAS 2017-06-20 20 4DSD CHEVR 20A-No Parking (Non-COM)\n",
      "8358531096 FGN4109 NY PAS 2016-11-14 20 SUBN CHRYS 20A-No Parking (Non-COM)\n",
      "7623299300 530LAW FL PAS 2016-07-23 20 SUBN CITRO 20A-No Parking (Non-COM)\n",
      "1416638830 GLP367 NY PAS 2017-04-30 20 SUBN DODGE \n",
      "7441946736 GMT8049 NY PAS 2017-02-27 20 4DSD DODGE 20A-No Parking (Non-COM)\n",
      "8522913341 KHB4412 PA PAS 2017-04-17 20 4DSD DODGE 20A-No Parking (Non-COM)\n",
      "8421057479 64921JT NY COM 2017-01-27 20 VAN FORD 20-No Parking (Com Plate)\n",
      "8533873610 HBZ9785 NY PAS 2017-05-16 20 2DSD FORD 20A-No Parking (Non-COM)\n",
      "8388024498 HGF2284 NY PAS 2016-11-14 20 SUBN FORD 20A-No Parking (Non-COM)\n",
      "8086541423 K78FFL NJ PAS 2016-09-07 20 SUBN FORD 20A-No Parking (Non-COM)\n",
      "8521664060 XW347T NJ PAS 2017-06-09 20 VAN FORD 20-No Parking (Com Plate)\n",
      "7541979089 GPW5892 NY PAS 2017-01-16 20 SUBN GMC 20A-No Parking (Non-COM)\n",
      "7487986524 AVS4503 NY PAS 2016-09-16 20 PICK HONDA 20A-No Parking (Non-COM)\n",
      "8141015345 FRJ7858 NY PAS 2016-07-22 20 SUBN HONDA 20A-No Parking (Non-COM)\n",
      "8543009080 GJA1784 NY PAS 2017-06-02 20 SUBN HONDA 20A-No Parking (Non-COM)\n",
      "8275023932 GRR5700 NY PAS 2016-09-16 20 2DSD HONDA 20A-No Parking (Non-COM)\n",
      "8193526089 GTE5903 NY PAS 2016-08-08 20 4DSD HONDA 20A-No Parking (Non-COM)\n",
      "7809488399 HBE5264 NY PAS 2016-10-03 20 4DSD HONDA 20A-No Parking (Non-COM)\n",
      "8241524547 T715157C NY OMT 2017-01-19 20 SUBN HONDA 20A-No Parking (Non-COM)\n",
      "7578395609 W81CNF NJ PAS 2016-10-24 20 SUBN HONDA 20A-No Parking (Non-COM)\n",
      "8018756946 7HG44 AL PAS 2016-08-29 20 4DSD HYUND 20A-No Parking (Non-COM)\n",
      "7043255211 HJC9828 NY PAS 2017-03-10 20 4DSD HYUND 20A-No Parking (Non-COM)\n",
      "8034434620 GYH6407 NY PAS 2016-08-19 20 4DSD INFIN 20A-No Parking (Non-COM)\n",
      "7587314647 100VM NY SRF 2016-12-07 20 SUBN JEEP 20A-No Parking (Non-COM)\n",
      "8536008374 FAD5808 NY PAS 2017-05-17 20 SUBN JEEP 20A-No Parking (Non-COM)\n",
      "8516810744 97304JB NY COM 2017-05-11 20 SUBN KIA 20-No Parking (Com Plate)\n",
      "8074505194 GFL3297 NY PAS 2016-10-21 20 SUBN ME/BE 20A-No Parking (Non-COM)\n",
      "8300067954 HBX2351 NY PAS 2016-12-07 20 SUBN ME/BE 20A-No Parking (Non-COM)\n",
      "8508050940 HJP4843 NY PAS 2017-01-17 20 SUBN ME/BE 20A-No Parking (Non-COM)\n",
      "8023492410 DYB1485 NY PAS 2016-10-04 20 4DSD NISSA 20A-No Parking (Non-COM)\n",
      "7411972721 EWL8888 NY PAS 2016-12-01 20 SUBN NISSA 20A-No Parking (Non-COM)\n",
      "7495741065 HFD1339 NY PAS 2016-07-22 20 SUBN NISSA 20A-No Parking (Non-COM)\n",
      "8536155176 HNU1266 NY PAS 2017-03-24 20 4DSD NISSA 20A-No Parking (Non-COM)\n",
      "8561455706 JEHIEL NY SRF 2017-05-31 20 2DSD NISSA 20A-No Parking (Non-COM)\n",
      "8546500216 DWKN70 FL PAS 2017-04-07 20 SUBN ROVER 20A-No Parking (Non-COM)\n",
      "8465012489 HFK6846 NY PAS 2016-11-25 20 4DSD SUBAR 20A-No Parking (Non-COM)\n",
      "7768685120 FJA9910 NY PAS 2016-10-17 20 SUBN TOYOT 20A-No Parking (Non-COM)\n",
      "8558202229 FRY1035 NY PAS 2017-04-29 20 4DSD TOYOT 20A-No Parking (Non-COM)\n",
      "8564165960 FXK5768 NY PAS 2017-06-24 20 4DSD TOYOT 20A-No Parking (Non-COM)\n",
      "8147540644 GXB8128 NY PAS 2016-09-01 20 4DSD TOYOT 20A-No Parking (Non-COM)\n",
      "7606849481 T638216C NY OMT 2017-05-08 20 4DSD TOYOT 20A-No Parking (Non-COM)\n",
      "8293037179 GJU4869 NY PAS 2016-08-26 21 4DSD ACURA 21-No Parking (street clean)\n",
      "8009559234 HBU6907 NY PAS 2016-08-10 21 4DSD ACURA 21-No Parking (street clean)\n",
      "8545156546 EVM6598 NY PAS 2017-05-03 21 4DSD AUDI 21-No Parking (street clean)\n",
      "8516050920 GXY1094 NY PAS 2017-03-03 21 SUBN AUDI 21-No Parking (street clean)\n",
      "8544889610 VVP9002 VA PAS 2017-06-14 21 4DSD AUDI 21-No Parking (street clean)\n",
      "8318510150 99H1010 TN PAS 2016-08-02 21 2DSD BMW 21-No Parking (street clean)\n",
      "8491819083 FHY6755 NY PAS 2017-03-03 21 4DSD BMW 21-No Parking (street clean)\n",
      "7725863710 GNF2877 NY PAS 2016-09-26 21 4DSD BMW 21-No Parking (street clean)\n",
      "1412956201 GNR5598 NY PAS 2016-07-20 21 SDN BMW \n",
      "7919376452 HAS5112 NY PAS 2017-01-27 21 SUBN BMW 21-No Parking (street clean)\n",
      "7970393330 HAT6686 NY PAS 2016-08-17 21 4DSD BMW 21-No Parking (street clean)\n",
      "8537965042 HFP5029 NY PAS 2017-05-16 21 4DSD BMW 21-No Parking (street clean)\n",
      "8581153938 X89HVW NJ PAS 2017-06-14 21 4DSD BMW 21-No Parking (street clean)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8236569895 EPY9505 NY PAS 2017-03-22 21 4DSD BUICK 21-No Parking (street clean)\n",
      "8502707383 JGL6885 PA PAS 2017-01-24 21 SUBN BUICK 21-No Parking (street clean)\n",
      "8511711946 42283JZ NY COM 2017-04-27 21 VAN CHEVR 21-No Parking (street clean)\n",
      "1418142980 483TFM TN PAS 2016-12-19 21 VAN CHEVR \n",
      "1420029915 53468JZ 99 COM 2017-04-27 21 VAN CHEVR \n",
      "8539666996 85121ME NY COM 2017-05-22 21 VAN CHEVR 21-No Parking (street clean)\n",
      "1413709760 DGN6881 NY PAS 2016-09-02 21 SDN CHEVR \n",
      "8473311693 DTG6286 NY PAS 2016-11-23 21 SUBN CHEVR 21-No Parking (street clean)\n",
      "7658191050 GEL4496 NY PAS 2016-07-22 21 SUBN CHEVR 21-No Parking (street clean)\n",
      "8478626049 GRU5176 NY PAS 2017-05-15 21 4DSD CHEVR 21-No Parking (street clean)\n",
      "7369979570 GTC5499 NY PAS 2016-07-20 21 4DSD CHEVR 21-No Parking (street clean)\n",
      "1400876217 GVB9839 NY PAS 2016-09-19 21 P-U CHEVR \n",
      "1422284335 HHJ5747 NY PAS 2017-06-03 21 SUBN CHEVR \n",
      "8556051480 M322307 NJ PAS 2017-04-26 21 PICK CHEVR 21-No Parking (street clean)\n",
      "8514570973 T738567C NY OMT 2017-06-21 21 SUBN CHEVR 21-No Parking (street clean)\n",
      "8357020770 Y56DLT NJ PAS 2017-01-20 21 4DSD CHEVR 21-No Parking (street clean)\n",
      "8523602306 GUG9349 NY PAS 2017-03-25 21 4DSD CHRYS 21-No Parking (street clean)\n",
      "1410697290 HZ214 RI PAS 2016-07-15 21 SUBN CHRYS \n",
      "8485267631 80381MD NY COM 2017-03-02 21 VAN DODGE 21-No Parking (street clean)\n",
      "7808365737 ETN7313 NY PAS 2017-03-22 21 4DSD DODGE 21-No Parking (street clean)\n",
      "8236558708 FLC9623 NY PAS 2017-01-23 21 SUBN DODGE 21-No Parking (street clean)\n",
      "8567100082 FTY1182 NY PAS 2017-05-03 21 4DSD DODGE 21-No Parking (street clean)\n",
      "8516402034 88040MH NY COM 2017-05-26 21 DELV FORD 21-No Parking (street clean)\n",
      "8237524573 CMD1897 NY PAS 2016-10-19 21 4DSD FORD 21-No Parking (street clean)\n",
      "8490203982 DBZ7195 NY PAS 2016-12-13 21 4DSD FORD 21-No Parking (street clean)\n",
      "8140540663 EHA1740 NY PAS 2016-10-27 21 SUBN FORD 21-No Parking (street clean)\n",
      "8539702370 FYW7060 NY PAS 2017-03-23 21 SUBN FORD 21-No Parking (street clean)\n",
      "8151587635 GFC5314 NY PAS 2016-11-22 21 SUBN FORD 21-No Parking (street clean)\n",
      "8536979239 GKP5732 NY PAS 2017-04-28 21 SUBN FORD 21-No Parking (street clean)\n",
      "8277588720 GYT3978 NY PAS 2016-11-10 21 2DSD FORD 21-No Parking (street clean)\n",
      "8330514596 HDK4072 NY PAS 2016-08-23 21 SUBN FORD 21-No Parking (street clean)\n",
      "8043823078 HHF5026 NY PAS 2016-09-06 21 SUBN FORD 21-No Parking (street clean)\n",
      "8173039823 JLN1340 PA PAS 2016-11-16 21 SUBN FORD 21-No Parking (street clean)\n",
      "8521903650 XAGW46 NJ PAS 2017-03-27 21 VAN FORD 21-No Parking (street clean)\n",
      "1420031892 43601MG NY COM 2017-05-01 21 VAN FRUEH \n",
      "8431017041 76130JH NY COM 2016-09-16 21 DELV FRUEH 21-No Parking (street clean)\n",
      "8104561698 GAV2010 NY PAS 2017-03-07 21 4DSD GEO 21-No Parking (street clean)\n",
      "1421330088 12040MJ NY COM 2017-06-20 21 SUBN GMC \n",
      "8463512264 20410AD NY COM 2016-10-28 21 VAN GMC 21-No Parking (street clean)\n",
      "8059052214 36733JX NY COM 2016-11-14 21 VAN GMC 21-No Parking (street clean)\n",
      "1417865507 77993JV NY COM 2017-02-06 21 VAN GMC \n",
      "7005104110 GYG7508 NY PAS 2016-09-01 21 SUBN GMC 21-No Parking (street clean)\n",
      "8077581614 XAYF77 NJ PAS 2017-02-27 21 DELV GMC 21-No Parking (street clean)\n",
      "8536832563 1441 WY PAS 2017-06-06 21 4DSD HONDA 21-No Parking (street clean)\n",
      "8292013593 601473 NY PAS 2016-11-09 21 4DSD HONDA 21-No Parking (street clean)\n",
      "8327066730 38BR360 AL PAS 2017-02-23 21 2DSD HONDA 21-No Parking (street clean)\n",
      "8432517677 71WC47 MA PAS 2016-11-14 21 SUBN HONDA 21-No Parking (street clean)\n",
      "8511906897 CVG8394 NY PAS 2017-03-21 21 SUBN HONDA 21-No Parking (street clean)\n",
      "8523487694 D03SU FL PAS 2017-06-12 21 SUBN HONDA 21-No Parking (street clean)\n",
      "7803577878 DRU6182 NY PAS 2016-07-19 21 SUBN HONDA 21-No Parking (street clean)\n",
      "8551867635 EJY9809 NY PAS 2017-06-15 21 SUBN HONDA 21-No Parking (street clean)\n",
      "8177030073 FPN6798 NY PAS 2016-07-22 21 SUBN HONDA 21-No Parking (street clean)\n",
      "7522710777 FTJ4934 NY PAS 2016-08-02 21 4DSD HONDA 21-No Parking (street clean)\n",
      "1415914771 FWY7687 NY PAS 2016-11-05 21 SUBN HONDA \n",
      "8511777581 GBP8071 NY PAS 2017-06-23 21 4DSD HONDA 21-No Parking (street clean)\n",
      "8507224441 GHR1050 NY PAS 2017-06-12 21 SUBN HONDA 21-No Parking (street clean)\n",
      "1418138575 GML6346 NY PAS 2016-12-19 21 SDN HONDA \n",
      "8494361650 GPR1060 NY PAS 2017-01-19 21 4DSD HONDA 21-No Parking (street clean)\n",
      "8532805115 GRH7130 NY PAS 2017-03-30 21 SUBN HONDA 21-No Parking (street clean)\n",
      "1420074817 GYX5626 NY PAS 2017-03-23 21 SUBN HONDA \n",
      "8081038309 HGU5174 NY PAS 2016-07-13 21 4DSD HONDA 21-No Parking (street clean)\n",
      "8539658732 HLY9761 NY PAS 2017-04-20 21 SUBN HONDA 21-No Parking (street clean)\n",
      "8254043190 HMF6591 NY PAS 2016-12-14 21 4DSD HONDA 21-No Parking (street clean)\n",
      "1415902598 HPP349 DE PAS 2016-10-08 21 SDN HONDA \n",
      "8035447610 JRV7796 PA PAS 2016-08-25 21 4DSD HONDA 21-No Parking (street clean)\n",
      "1416152180 KGM0645 PA PAS 2016-11-03 21  HONDA \n",
      "8270065079 L727629 NJ PAS 2016-08-31 21 SUBN HONDA 21-No Parking (street clean)\n",
      "1412424525 T6835420 NY OMT 2016-07-27 21 SDN HONDA \n",
      "8054568940 C52DUH NJ PAS 2016-11-14 21 4DSD HYUND 21-No Parking (street clean)\n",
      "7381087881 ETP1967 NY PAS 2016-08-04 21 4DSD HYUND 21-No Parking (street clean)\n",
      "7813942917 GZD3951 NY PAS 2016-08-04 21 4DSD HYUND 21-No Parking (street clean)\n",
      "8522906415 HME3832 NY PAS 2017-03-21 21 4DSD HYUND 21-No Parking (street clean)\n",
      "8303022775 AS972S NJ PAS 2016-07-19 21 DELV INTER 21-No Parking (street clean)\n",
      "8556262995 HPL5772 NY PAS 2017-06-12 21 4DSD JAGUA 21-No Parking (street clean)\n",
      "8533998533 GXR4859 NY PAS 2017-06-12 21 SUBN JEEP 21-No Parking (street clean)\n",
      "7807869367 HEE4014 NY PAS 2016-11-22 21 SUBN JEEP 21-No Parking (street clean)\n",
      "8170554482 GKB1444 NY PAS 2016-08-31 21 SUBN LEXUS 21-No Parking (street clean)\n",
      "8475485066 GYR5020 NY PAS 2017-03-23 21 SUBN LEXUS 21-No Parking (street clean)\n",
      "1415885734 GNN27768 NY PAS 2016-09-30 21 SUBN LINCO \n",
      "8271048004 PDB2482 NC PAS 2016-08-30 21 SUBN LINCO 21-No Parking (street clean)\n",
      "8487768659 T639150C NY OMT 2017-02-03 21 SUBN LINCO 21-No Parking (street clean)\n",
      "8196531606 735ZVY CT PAS 2016-10-11 21 4DSD MAZDA 21-No Parking (street clean)\n",
      "8556351920 FCN6061 NY PAS 2017-04-28 21 SUBN MAZDA 21-No Parking (street clean)\n",
      "8563702300 GUY5928 NY PAS 2017-05-18 21 4DSD MAZDA 21-No Parking (street clean)\n",
      "8475466254 HWN1816 TX PAS 2016-12-27 21 4DSD MAZDA 21-No Parking (street clean)\n",
      "8349510500 84302T VA PAS 2016-07-08 21 SUBN ME/BE 21-No Parking (street clean)\n",
      "8327051209 ATE9889 NY PAS 2016-12-20 21 4DSD ME/BE 21-No Parking (street clean)\n",
      "7803990927 HCN1049 NY PAS 2017-03-28 21 SUBN ME/BE 21-No Parking (street clean)\n",
      "8514726985 HKB2413 NY PAS 2017-05-22 21 4DSD ME/BE 21-No Parking (street clean)\n",
      "8360507120 OL4468J NJ PAS 2016-07-26 21 4DSD ME/BE 21-No Parking (street clean)\n",
      "1419707358 V97GVE NJ PAS 2017-02-18 21 SUBN ME/BE \n",
      "8557255329 HFE4369 NY PAS 2017-05-11 21 SUBN MERCU 21-No Parking (street clean)\n",
      "8512671312 8892CZ CT CMB 2017-06-06 21 SUBN NISSA 21-No Parking (street clean)\n",
      "7081940572 ATS3775 NY PAS 2017-01-04 21 4DSD NISSA 21-No Parking (street clean)\n",
      "8472183579 BNZF31 FL PAS 2016-12-03 21 4DSD NISSA 21-No Parking (street clean)\n",
      "8190539723 DKT8358 NY PAS 2016-09-08 21 2DSD NISSA 21-No Parking (street clean)\n",
      "1416492320 FGR5997 NY PAS 2016-09-30 21 SDN NISSA \n",
      "8549705664 FYW4686 NY PAS 2017-06-03 21 4DSD NISSA 21-No Parking (street clean)\n",
      "1420512468 GJH8815 NY PAS 2017-04-08 21 SUBN NISSA \n",
      "8551204051 GNN9248 NY PAS 2017-05-04 21 SUBN NISSA 21-No Parking (street clean)\n",
      "8344027755 GUP8589 NY PAS 2016-12-07 21 SUBN NISSA 21-No Parking (street clean)\n",
      "8539277086 GVH4035 PA PAS 2017-05-26 21 4DSD NISSA 21-No Parking (street clean)\n",
      "1417861800 GYM6658 NY PAS 2017-03-07 21 SDN NISSA \n",
      "7081508339 HCF7990 NY PAS 2017-01-30 21 SUBN NISSA 21-No Parking (street clean)\n",
      "8533396259 HCL5539 NY PAS 2017-05-26 21 SUBN NISSA 21-No Parking (street clean)\n",
      "8552758799 HDB8092 NY PAS 2017-05-18 21 SUBN NISSA 21-No Parking (street clean)\n",
      "8172060956 HJY5787 NY PAS 2017-03-24 21 SUBN NISSA 21-No Parking (street clean)\n",
      "8534828313 HSC8642 NY PAS 2017-06-16 21 4DSD NISSA 21-No Parking (street clean)\n",
      "7803991737 FSJ1102 NY PAS 2017-03-29 21 SUBN PORSC 21-No Parking (street clean)\n",
      "8532875324 HKM6966 NY OMS 2017-06-13 21 2DSD SMART 21-No Parking (street clean)\n",
      "7803916818 2405692 PA PAS 2016-09-30 21 SUBN SUBAR 21-No Parking (street clean)\n",
      "8534565030 EEH3996 NY PAS 2017-06-22 21 SUBN SUBAR 21-No Parking (street clean)\n",
      "8345516518 EUX8678 NY PAS 2016-09-27 21 4DSD SUBAR 21-No Parking (street clean)\n",
      "8198510771 FWP9546 NY PAS 2016-08-30 21 SUBN SUBAR 21-No Parking (street clean)\n",
      "8561603562 GUM5490 NY PAS 2017-06-08 21 SUBN SUBAR 21-No Parking (street clean)\n",
      "8260034475 HNR3840 NY 999 2017-01-23 21 4DSD SUBAR 21-No Parking (street clean)\n",
      "8489005175 450SEY CT PAS 2016-12-29 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "8327056311 809RGE FL PAS 2017-01-11 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "8035390004 853NG3 MA PAS 2016-09-29 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8473630373 923156N NJ PAS 2017-03-21 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "7431960360 ECL2156 NY PAS 2016-07-19 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "1411163175 EFY2042 NY PAS 2016-07-14 21 SUBN TOYOT \n",
      "8293532713 EGE9369 NY PAS 2016-07-29 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "8554703479 EPD3783 NY PAS 2017-05-04 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8444566147 FJB1476 NY PAS 2017-02-22 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "1412635536 GLS6347 NY PAS 2016-12-12 21 SUBN TOYOT \n",
      "8526761936 GMZ4346 NY PAS 2017-05-02 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "7061109026 GWE6421 NY PAS 2016-11-04 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "1416140300 GYJ7561 NY PAS 2016-11-02 21 SDN TOYOT \n",
      "8470029381 HAL3075 NY PAS 2017-02-17 21 2DSD TOYOT 21-No Parking (street clean)\n",
      "8554053527 HBX2262 NY PAS 2017-05-05 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8213559599 HDF4570 NY PAS 2016-12-19 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "8151563965 HFD4826 NY PAS 2016-09-09 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8127027108 HFE5815 NY PAS 2016-07-11 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8491309627 HFF9841 NY PAS 2017-03-02 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8533111010 HGL1239 NY PAS 2017-04-20 21 PICK TOYOT 21-No Parking (street clean)\n",
      "7047095822 HLD7424 NY PAS 2017-04-07 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8554957313 HRH9120 NY PAS 2017-05-22 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8268595711 T426737C NY OMT 2016-08-18 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8375011915 T631317C NY OMT 2016-09-26 21 SUBN TOYOT 21-No Parking (street clean)\n",
      "8475107199 T665101C NY OMT 2017-01-25 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "8532821650 T696481C NY OMT 2017-06-20 21 4DSD TOYOT 21-No Parking (street clean)\n",
      "1399238401 WLDB0SS GA PAS 2016-12-30 21 P-U TOYOT \n",
      "8538515603 731762B TX PAS 2017-05-15 21 4DSD VOLKS 21-No Parking (street clean)\n",
      "8513583789 FLJ3099 NY PAS 2017-06-22 21 2DSD VOLKS 21-No Parking (street clean)\n",
      "8273071844 GFM6245 NY PAS 2016-10-20 21 4DSD VOLKS 21-No Parking (street clean)\n",
      "8532602563 CVU3012 NY PAS 2017-03-23 21 4DSD VOLVO 21-No Parking (street clean)\n",
      "8478353227 34SW77 NY MOT 2016-12-02 21 MCY YAMAH 21-No Parking (street clean)\n",
      "[('summons_number', '1418425369'), ('plate_id', 'JYW5248'), ('registration_state', 'PA'), ('plate_type', 'PAS'), ('issue_date', '3/21/2017'), ('violation_code', '21'), ('vehicle_body_type', 'SDN'), ('vehicle_make', ''), ('violation_description', '')]\n",
      "\n",
      "8361518277 HCX7823 NY PAS 2016-10-12 23 4DSD HYUND 23-No Parking (taxi stand)\n",
      "8154034347 CTX3627 NY PAS 2016-09-06 24 SUBN AUDI 24-No Parking (exc auth veh)\n",
      "7764794314 HFP4684 NY PAS 2016-08-05 24 4DSD AUDI 24-No Parking (exc auth veh)\n",
      "8544611310 GTC4836 NY PAS 2017-06-07 24 SUBN CADIL 24-No Parking (exc auth veh)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8566704320 L62FLC NJ PAS 2017-05-17 24 SUBN CHEVR 24-No Parking (exc auth veh)\n",
      "8536961156 X92FSM NJ PAS 2017-03-28 24 SUBN HYUND 24-No Parking (exc auth veh)\n",
      "1408122029 DSN6323 NY PAS 2016-07-04 24 SUBN JEEP \n",
      "8266568753 F12GRE NJ PAS 2016-11-11 24 SUBN JEEP 24-No Parking (exc auth veh)\n",
      "8446524806 GYG8911 NY PAS 2016-12-18 24 SUBN JEEP 24-No Parking (exc auth veh)\n",
      "8316519355 HDJ7785 PA PAS 2016-07-14 24 2DSD NISSA 24-No Parking (exc auth veh)\n",
      "8533035640 T687600C NY OMT 2017-05-31 24 4DSD NISSA 24-No Parking (exc auth veh)\n",
      "8526732663 ASV2478 NY PAS 2017-06-22 24 4DSD TOYOT 24-No Parking (exc auth veh)\n",
      "1410027223 ENS9253 NY PAS 2016-10-31 24 SDN VOLKS \n",
      "8479824712 58910MG NY COM 2017-04-21 26 DELV ISUZU 26-No Stnd (for-hire veh only)\n",
      "1416527722 AHG9422 NY PAS 2017-01-05 27 SUBN TOYOT \n",
      "8512270482 Y26CRJ NJ PAS 2017-06-03 31 SUBN BSA 31-No Stand (Com. Mtr. Zone)\n",
      "8498706890 THANEDAR NY OMT 2017-03-22 31 SUBN CADIL 31-No Stand (Com. Mtr. Zone)\n",
      "8328546632 HHP7446 NY PAS 2016-12-02 31 2DSD CHEVR 31-No Stand (Com. Mtr. Zone)\n",
      "8496254203 GMW3411 NY PAS 2017-05-26 31 PICK DODGE 31-No Stand (Com. Mtr. Zone)\n",
      "8552002887 GTP5204 NY PAS 2017-04-24 31 PICK DODGE 31-No Stand (Com. Mtr. Zone)\n",
      "8480300255 GHG9797 NY PAS 2016-11-18 31 4DSD HYUND 31-No Stand (Com. Mtr. Zone)\n",
      "8442517080 KCD4692 PA PAS 2016-10-06 31 4DSD INFIN 31-No Stand (Com. Mtr. Zone)\n",
      "8482450256 GGN8817 NY PAS 2016-11-18 31 4DSD LEXUS 31-No Stand (Com. Mtr. Zone)\n",
      "8480624486 987536N NJ PAS 2017-06-19 31 SUBN ME/BE 31-No Stand (Com. Mtr. Zone)\n",
      "7059132030 HLC5085 NY PAS 2017-02-06 31 4DSD NISSA 31-No Stand (Com. Mtr. Zone)\n",
      "8482371824 Z317820 IL PAS 2017-04-14 31 SUBN NISSA 31-No Stand (Com. Mtr. Zone)\n",
      "8477906040 DUMBO NY SRF 2017-03-08 31 SUBN ROVER 31-No Stand (Com. Mtr. Zone)\n",
      "8431004010 GRZ1934 NY PAS 2016-07-27 31 SUBN VOLVO 31-No Stand (Com. Mtr. Zone)\n",
      "8480331896 42648MG NY COM 2017-05-23 35 VAN NS/OT 35-Selling/Offer Merchandise\n",
      "4631704810 HCR7297 NY PAS 2017-03-15 36 4DSD AUDI PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629001955 268DDD NY SPO 2016-12-23 36 CONV BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628525523 326SF9 MA PAS 2016-12-21 36 UT BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634734539 692RNK FL PAS 2017-06-05 36 UT BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631147647 DRX5800 NY PAS 2017-03-01 36 SUBN BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625481946 GKW8725 NY PAS 2016-10-20 36 4DSD BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629806404 GSY2361 NY PAS 2017-01-23 36 4DSD BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627790053 HDW5569 NY PAS 2016-12-06 36 SUBN BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627653700 HEG7444 NY PAS 2016-12-01 36 4DSD BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630524241 HJBP29 FL PAS 2017-02-03 36 4D BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630856500 KBN2190 PA PAS 2017-02-15 36 SDN BMW PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630528027 A19DVD NJ PAS 2017-02-03 36 4 DR BUICK PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627862647 DGJ9751 NY PAS 2016-12-09 36 4DSD CADIL PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633961743 13237JW NY COM 2017-05-16 36 VAN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626993928 13251TW NY TOW 2016-11-17 36 PICK CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631696527 EVN1748 NY PAS 2017-03-13 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624293630 FZH6298 NY PAS 2016-09-28 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624017663 GFM1718 NY PAS 2016-09-26 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4622257713 GUG8491 NY PAS 2016-07-14 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623548065 GWE6116 NY PAS 2016-09-19 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4635118952 HAR2738 NY PAS 2017-06-15 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627826096 HFF4505 NY PAS 2016-12-05 36 SUBN CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632259779 HKW1987 NY PAS 2017-03-29 36 4DSD CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632633800 HPJ4663 NY PAS 2017-04-07 36 4DSD CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623011161 KBY7419 PA PAS 2016-09-08 36 SW CHEVR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624905880 FAM2543 NY PAS 2016-10-11 36 4DSD CHRYS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629224075 28874LV NY OML 2017-01-06 36 SUBN DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630489587 A58ETJ NJ PAS 2017-02-02 36 WAGO DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633374618 GSS9862 NY PAS 2017-05-03 36 SUBN DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627113330 HCA5464 NY OMS 2016-11-21 36 SUBN DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634831272 HFM4841 NY PAS 2017-06-07 36 SUBN DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628721567 HJH4995 NY PAS 2016-12-22 36 SUBN DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625958660 R16GNM NJ PAS 2016-10-27 36 WAGO DODGE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625752279 55801JJ NY COM 2016-10-25 36 VAN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628610046 59654MG NY COM 2016-12-21 36 VAN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634723785 68667MH NY COM 2017-06-05 36 VAN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628303630 BHV3783 NY PAS 2016-12-12 36 SUBN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625462150 GPV4492 NY PAS 2016-10-19 36 SUBN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630933890 HFA3346 NY PAS 2017-02-17 36 SUBN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633425286 HNF4110 NY PAS 2017-05-01 36 SUBN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634067419 HPU4930 NY PAS 2017-05-18 36 SUBN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625926610 N102911C NY OMT 2016-10-27 36 VAN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623721759 N203606C NY OMT 2016-09-20 36 SUBN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624353316 XW317E NJ PAS 2016-09-28 36 VAN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4622234488 XX120W NJ PAS 2016-07-13 36 VAN FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634616695 ZGG2970 PA PAS 2017-05-31 36 TK FORD PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624649230 44214ME NY COM 2016-10-06 36 VAN GMC PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627864050 AVW6443 NY PAS 2016-12-09 36 PICK GMC PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629510874 EEC9257 NY PAS 2017-01-13 36 SUBN GMC PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626307681 HJG3097 NY PAS 2016-11-02 36 SUBN GMC PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623393240 HJV1113 NY PAS 2016-09-14 36 SUBN GMC PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633560232 B77FRW NJ PAS 2017-05-08 36 WAGO HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628277370 DJF3555 NY PAS 2016-12-15 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630268431 DMM8334 NY PAS 2017-02-02 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633215978 ESK4137 NY PAS 2017-05-01 36 SUBN HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634195458 EUG5313 NY PAS 2017-05-22 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632953775 EXM3315 NY PAS 2017-04-25 36 2DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632297847 FEJ4610 NY PAS 2017-03-30 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623083550 FZM1848 NY PAS 2016-09-08 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623433754 GKV9373 NY PAS 2016-09-15 36 SUBN HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633489574 GMK6658 NY PAS 2017-05-02 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634803677 GXV2822 NY PAS 2017-06-06 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627198231 GYB8478 NY PAS 2016-11-22 36 SUBN HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623708354 HCV4449 NY PAS 2016-09-20 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625564463 HHC5309 NY PAS 2016-10-21 36 2DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627490628 HHL8974 NY PAS 2016-12-05 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634899851 HNB6369 NY PAS 2017-06-09 36 4DSD HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632049724 JPA2121 PA PAS 2017-03-20 36 SW HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627882531 KBK7452 PA PAS 2016-12-08 36 SDN HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626203024 LPV63K NJ PAS 2016-11-01 36 WAGO HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624272158 RXB49E NJ PAS 2016-09-28 36 WAGO HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628684108 W28HDS NJ PAS 2016-12-19 36 4 DR HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632988108 Z89CYH NJ PAS 2017-04-26 36 WAGO HONDA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629475643 5XP943 NY PAS 2017-01-13 36 4DSD HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625674141 BGR3063 NY PAS 2016-10-24 36 4DSD HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623505170 DGM8721 NY PAS 2016-09-16 36 SUBN HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631977218 GPH8659 NY PAS 2017-03-21 36 4DSD HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631594329 GPZ1922 NY PAS 2017-03-13 36 SUBN HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624796032 HAP9881 NY PAS 2016-10-07 36 SUBN HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632678715 T724474C NY OMT 2017-04-07 36 4DSD HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630976050 VPX8534 VA PAS 2017-02-17 36 SU HYUND PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626350057 GEN1029 NY PAS 2016-11-03 36 SUBN INFIN PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623442081 GHL2282 NY PAS 2016-09-15 36 4DSD INFIN PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624241198 T686150C NY OMT 2016-09-28 36 SUBN INFIN PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4622845040 19603TT NY TOW 2016-08-10 36 TOW INTER PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630066822 FTV8624 NY PAS 2017-01-24 36 4DSD JAGUA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628491689 353XXL FL PAS 2016-12-20 36 UT JEEP PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627065334 DGN4487 NY PAS 2016-11-18 36 SUBN JEEP PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626772705 HAM6678 NY PAS 2016-11-14 36 4DSD KIA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626358743 GNN6005 NY PAS 2016-11-03 36 4DSD LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4622727298 GWF1975 NY PAS 2016-08-04 36 4DSD LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4622272659 HEA8485 NY OMS 2016-07-14 36 4DSD LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631639052 HEK6758 NY PAS 2017-03-09 36 SUBN LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629635506 HHA6371 NY PAS 2017-01-18 36 SUBN LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633257055 HJN6853 NY PAS 2017-05-02 36 SUBN LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629197515 N78FLU NJ PAS 2017-01-09 36 WAGO LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633226356 PTJ969 NY PAS 2017-05-01 36 SUBN LEXUS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626735174 HGR5863 NY PAS 2016-11-14 36 4DSD LINCO PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4622247501 T635722C NY OMT 2016-07-13 36 4DSD LINCO PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626383063 T701050C NY OMT 2016-11-04 36 4DSD LINCO PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631263763 92814 NY MED 2017-03-03 36 4DSD ME/BE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626546109 39999MB NY COM 2016-11-07 36 VAN ME/BE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626838832 EVV1706 NY PAS 2016-11-16 36 2DSD ME/BE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623995203 FHV5859 NY PAS 2016-09-23 36 4DSD ME/BE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632906438 GTB2097 NY PAS 2017-04-24 36 SUBN ME/BE PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633747381 HPA3069 NY PAS 2017-05-12 36 2DSD MINI PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628411931 GTJ9563 NY PAS 2016-12-16 36 4DSD MITSU PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4622724601 EJG3090 NY PAS 2016-08-04 36 4DSD NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624182546 FHD2704 NY PAS 2016-09-27 36 4DSD NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630154796 FYB4398 NY PAS 2017-01-31 36 SUBN NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633052056 GAU8752 NY PAS 2017-04-27 36 SUBN NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625956213 GFM3693 NY PAS 2016-10-27 36 4DSD NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634991421 GMS3982 NY PAS 2017-06-13 36 SUBN NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625626006 GTL5801 NY PAS 2016-10-26 36 4DSD NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624010073 GUU9995 NY PAS 2016-09-23 36 SUBN NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630535779 HKM3744 NY PAS 2017-02-03 36 4DSD NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633458899 HMX9162 NY PAS 2017-05-04 36 4DSD NISSA PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633736383 GHF2057 NY PAS 2017-05-05 36 2DSD SMART PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628471230 GYW6429 NY PAS 2016-12-19 36 SUBN SUBAR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632483060 HFS9255 NY PAS 2017-04-04 36 SUBN SUBAR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629933499 UNZ802 NY PAS 2017-01-25 36 SUBN SUBAR PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4631525290 9F69B NY OMT 2017-03-03 36 TAXI TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627196258 BKE8325 NY PAS 2016-11-22 36 SUBN TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628712840 CBE9063 NY PAS 2016-12-22 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626437205 EBW9207 NY PAS 2016-11-04 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625979705 EEM6114 NY PAS 2016-10-28 36 SUBN TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4628920278 FXX8143 NY PAS 2017-01-03 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4635192880 GGB4757 NY PAS 2017-06-16 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4632534833 GVC1192 NY PAS 2017-04-04 36 SUBN TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4625003180 HFH3628 NY PAS 2016-10-13 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630601934 HHU7705 NY PAS 2017-02-06 36 SUBN TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4627237492 T435176C NY OMT 2016-11-22 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4629207612 T663277C NY OMT 2017-01-05 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4634957711 T692003C NY OMT 2017-06-07 36 SUBN TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623615984 T692737C NY OMT 2016-09-19 36 4DSD TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4624196740 W688AV NY PAS 2016-09-26 36 SUBN TOYOT PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4633446757 FXB2287 NY PAS 2017-05-04 36 4DSD VOLKS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4623672323 HCS2424 NY PAS 2016-09-20 36 SUBN VOLKS PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4626992584 GKW7146 NY PAS 2016-11-17 36 SUBN VOLVO PHTO SCHOOL ZN SPEED VIOLATION\n",
      "4630990185 NYRR NY RGL 2017-02-17 36 4DSD VOLVO PHTO SCHOOL ZN SPEED VIOLATION\n",
      "8457515251 HAK5607 NY PAS 2017-01-13 37 SUBN AUDI 37-Expired Muni Meter\n",
      "8306031910 GBD7091 NY PAS 2016-12-07 37 SUBN BMW 37-Expired Muni Meter\n",
      "8457507084 GXL3727 NY PAS 2016-11-16 37 4DSD BMW 37-Expired Muni Meter\n",
      "8505255379 M70HGT NJ PAS 2017-01-27 37 4DSD BMW 37-Expired Muni Meter\n",
      "7128799357 ZPBEAR NY SRF 2016-09-29 37 CONV BMW 37-Expired Muni Meter\n",
      "8518359399 25739MA NY COM 2017-04-11 37 VAN CHEVR 37-Expired Muni Meter\n",
      "7251577239 EKE9259 NY PAS 2016-12-07 37 SUBN CHEVR 37-Expired Muni Meter\n",
      "8483263385 GEX1404 NY PAS 2017-04-15 37 4DSD CHRYS 37-Expired Muni Meter\n",
      "7658725067 45959MH NY COM 2016-12-29 37 VAN DODGE 37-Expired Muni Meter\n",
      "7808333074 GWG6715 NY PAS 2016-11-09 37 SUBN DODGE 37-Expired Muni Meter\n",
      "8511286664 30330MC NY COM 2017-06-17 37 VAN FORD 37-Expired Muni Meter\n",
      "8424504914 53185JX NY COM 2016-08-15 37 VAN FORD 37-Expired Muni Meter\n",
      "8512119433 76877MJ NY COM 2017-05-24 37 VAN FORD 37-Expired Muni Meter\n",
      "8513111030 GMZ9316 NY PAS 2017-04-26 37 SUBN FORD 37-Expired Muni Meter\n",
      "8095027893 GVU9201 NY PAS 2016-08-09 37 4DSD FORD 37-Expired Muni Meter\n",
      "7018187588 J96GMD NJ PAS 2016-11-12 37 PICK FORD 37-Expired Muni Meter\n",
      "8519703471 Y81GLL NJ PAS 2017-02-24 37 VAN FORD 37-Expired Muni Meter\n",
      "8519703094 26684MA NY COM 2017-02-23 37 VAN FRUEH 37-Expired Muni Meter\n",
      "8081576769 19662JA NY COM 2016-12-19 37 VAN GMC 37-Expired Muni Meter\n",
      "8323007330 MSINGH NY SRF 2016-08-22 37 SUBN GMC 37-Expired Muni Meter\n",
      "8522218316 EFJ1721 NY PAS 2017-05-17 37 SUBN HONDA 37-Expired Muni Meter\n",
      "8362534679 FLW5550 NY PAS 2017-04-06 37 SUBN HONDA 37-Expired Muni Meter\n",
      "7816795701 GND8994 NY PAS 2016-11-05 37 4DSD HONDA 37-Expired Muni Meter\n",
      "8188109824 GVK6209 NY PAS 2016-12-10 37 SUBN HONDA 37-Expired Muni Meter\n",
      "8553153472 HDN9923 NY PAS 2017-05-11 37 SUBN HONDA 37-Expired Muni Meter\n",
      "7310298330 GMR2584 NY PAS 2016-12-01 37 4DSD HYUND 37-Expired Muni Meter\n",
      "8245564473 HLW1524 NY PAS 2016-10-26 37 SUBN HYUND 37-Expired Muni Meter\n",
      "8467017971 EWV3891 NY PAS 2016-10-26 37 4DSD INFIN 37-Expired Muni Meter\n",
      "7755149869 GPK7120 NY PAS 2016-10-13 37 4DSD INFIN 37-Expired Muni Meter\n",
      "8086035645 49966JG NY COM 2016-09-14 37 VAN INTER 37-Expired Muni Meter\n",
      "7035587469 GSC8976 NY PAS 2016-08-01 37 SUBN JEEP 37-Expired Muni Meter\n",
      "8261064578 GSM5317 NY PAS 2016-11-14 37 4DSD KIA 37-Expired Muni Meter\n",
      "8528450650 CSHV03 FL PAS 2017-02-27 37 4DSD LEXUS 37-Expired Muni Meter\n",
      "8490569400 HBT2206 NY PAS 2017-03-01 37 SUBN LINCO 37-Expired Muni Meter\n",
      "8347522157 HJY6578 NY PAS 2016-10-04 37 SUBN LINCO 37-Expired Muni Meter\n",
      "8302035312 T693044C NY OMT 2016-11-03 37 4DSD LINCO 37-Expired Muni Meter\n",
      "7729115463 HDV2678 NY PAS 2016-09-28 37 PICK MAZDA 37-Expired Muni Meter\n",
      "8210512134 GXM8761 NY PAS 2016-07-01 37 4DSD ME/BE 37-Expired Muni Meter\n",
      "7079881500 GXU5070 NY PAS 2017-04-29 37 SUBN ME/BE 37-Expired Muni Meter\n",
      "8345018233 XADY93 NJ PAS 2016-09-13 37 VAN NISSA 37-Expired Muni Meter\n",
      "8489530932 JFW6671 PA PAS 2017-04-18 37 4DSD PONTI 37-Expired Muni Meter\n",
      "8347510180 HAU1658 NY PAS 2016-07-23 37 SUBN SPRI 37-Expired Muni Meter\n",
      "7000296318 D49HND NJ PAS 2017-03-22 37 SUBN TOYOT 37-Expired Muni Meter\n",
      "8478472812 EAW3389 NY PAS 2017-03-06 37 4DSD TOYOT 37-Expired Muni Meter\n",
      "8550159396 EBM8845 NY PAS 2017-06-16 37 SUBN TOYOT 37-Expired Muni Meter\n",
      "7084261187 FZN7149 NY PAS 2016-08-24 37 SUBN TOYOT 37-Expired Muni Meter\n",
      "7238369850 GKB2710 NY PAS 2016-07-25 37 SUBN TOYOT 37-Expired Muni Meter\n",
      "8475489709 HFM9768 NY PAS 2017-04-05 37 SUBN TOYOT 37-Expired Muni Meter\n",
      "8391016900 EMM8151 NY PAS 2016-11-02 37 SUBN VOLVO 37-Expired Muni Meter\n",
      "8372548559 EWN1057 NY PAS 2017-03-13 38 SUBN ACURA 38-Failure to Display Muni Rec\n",
      "8546314093 GBG4410 NY PAS 2017-05-27 38 SUBN ACURA 38-Failure to Display Muni Rec\n",
      "8467035675 GSB3078 NY PAS 2017-01-16 38 SUBN ACURA 38-Failure to Display Muni Rec\n",
      "8023096722 H25FHZ NJ PAS 2016-08-26 38 SUBN ACURA 38-Failure to Display Muni Rec\n",
      "8515865737 AJ08289 CT PAS 2017-04-12 38 4DSD AUDI 38-Failure to Display Muni Rec\n",
      "8093057328 PPL3935 GA PAS 2017-02-13 38 SUBN AUDI 38-Failure to Display Muni Rec\n",
      "8467045826 GEG1583 NY PAS 2017-03-02 38 SUBN BMW 38-Failure to Display Muni Rec\n",
      "7752393691 HJF2092 NY PAS 2016-12-03 38 SUBN BMW 38-Failure to Display Muni Rec\n",
      "8506469132 W43GFH NJ PAS 2017-04-05 38 4DSD BMW 38-Failure to Display Muni Rec\n",
      "8550654115 GYV8496 NY PAS 2017-05-02 38 SUBN CADIL 38-Failure to Display Muni Rec\n",
      "8521609796 HMA6778 NY PAS 2017-04-03 38 SUBN CADIL 38-Failure to Display Muni Rec\n",
      "7395462774 12133JY NY COM 2016-09-23 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "7926615596 12411JY NY COM 2016-09-12 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "8507056830 20654ME NY COM 2017-03-02 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "8514752339 85562ME NY COM 2017-03-28 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "8505131836 87155MA NY COM 2017-05-27 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "8355032767 96143MB NY COM 2016-12-08 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "8549906335 FCM7111 NY PAS 2017-05-24 38 SUBN CHEVR 38-Failure to Display Muni Rec\n",
      "7034978219 GHK9710 NY PAS 2016-09-21 38 SUBN CHEVR 38-Failure to Display Muni Rec\n",
      "8543015133 HFV7703 NY PAS 2017-06-20 38 SUBN CHEVR 38-Failure to Display Muni Rec\n",
      "8490761784 HHS5227 NY PAS 2017-01-20 38 SUBN CHEVR 38-Failure to Display Muni Rec\n",
      "8206046343 HMU5912 NY PAS 2017-03-04 38 SUBN CHEVR 38-Failure to Display Muni Rec\n",
      "8491610029 XDDX12 NJ PAS 2017-01-21 38 VAN CHEVR 38-Failure to Display Muni Rec\n",
      "8548102378 HEJ9518 NY PAS 2017-04-26 38 SUBN CHRYS 38-Failure to Display Muni Rec\n",
      "8550958402 HHU8104 NY PAS 2017-05-24 38 SUBN DODGE 38-Failure to Display Muni Rec\n",
      "8523051284 SH3ZBAD AL PAS 2017-03-11 38 4DSD DODGE 38-Failure to Display Muni Rec\n",
      "8470577803 W468KH IA PAS 2017-02-04 38 PICK DODGE 38-Failure to Display Muni Rec\n",
      "8063538547 26013KA NY COM 2016-08-04 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "7038676805 29518MD NY COM 2017-01-20 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "8167068687 50651JT NY COM 2017-01-19 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "8081538124 56363KA NY COM 2016-08-01 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "8515456515 72108MH NY COM 2017-04-18 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "8034466670 83546JU NY COM 2016-10-04 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "7041087311 EDNASON NY SRF 2016-08-19 38 4DSD FORD 38-Failure to Display Muni Rec\n",
      "8370519581 GHM9658 NY PAS 2016-10-22 38 SUBN FORD 38-Failure to Display Muni Rec\n",
      "7025521814 GTZ2070 NY PAS 2016-07-12 38 SUBN FORD 38-Failure to Display Muni Rec\n",
      "8529109661 GZM3633 NY PAS 2017-04-24 38 SUBN FORD 38-Failure to Display Muni Rec\n",
      "8437007306 HDE3721 NY OMS 2016-09-28 38 VAN FORD 38-Failure to Display Muni Rec\n",
      "8104553239 HHG5974 NY PAS 2017-02-11 38 4DSD FORD 38-Failure to Display Muni Rec\n",
      "7035942324 HHU3520 NY PAS 2016-09-06 38 CONV FORD 38-Failure to Display Muni Rec\n",
      "7034999387 HKS5462 NY PAS 2017-03-27 38 SUBN FORD 38-Failure to Display Muni Rec\n",
      "7081935680 MLU536 SC PAS 2016-12-14 38 SUBN FORD 38-Failure to Display Muni Rec\n",
      "8394507669 12837JB NY COM 2016-09-13 38 DELV FRUEH 38-Failure to Display Muni Rec\n",
      "8010068883 AT560J NJ PAS 2017-01-25 38 DELV FRUEH 38-Failure to Display Muni Rec\n",
      "8226541451 12460JY NY COM 2016-09-22 38 VAN GMC 38-Failure to Display Muni Rec\n",
      "7048680090 12569JY NY COM 2017-03-28 38 VAN GMC 38-Failure to Display Muni Rec\n",
      "7047487591 50741JZ NY COM 2017-04-13 38 UTIL GMC 38-Failure to Display Muni Rec\n",
      "7079347580 58577JZ NY COM 2016-07-23 38 VAN GMC 38-Failure to Display Muni Rec\n",
      "8288531891 67173MC NY COM 2016-09-29 38 VAN GMC 38-Failure to Display Muni Rec\n",
      "7453993295 89661JV NY COM 2016-08-06 38 VAN GMC 38-Failure to Display Muni Rec\n",
      "8502858361 DJE1983 MI PAS 2017-02-18 38 SUBN GMC 38-Failure to Display Muni Rec\n",
      "7079025515 GDR6073 NY PAS 2016-11-19 38 SUBN GMC 38-Failure to Display Muni Rec\n",
      "7031406213 GYJ5951 NY PAS 2016-09-10 38 SUBN GMC 38-Failure to Display Muni Rec\n",
      "8524952829 HNJ3540 NY PAS 2017-03-15 38 PICK GMC 38-Failure to Display Muni Rec\n",
      "7503174304 L45DKG NJ PAS 2016-09-15 38 VAN GMC 38-Failure to Display Muni Rec\n",
      "8344008256 DHJ5741 NY PAS 2016-09-03 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8541357818 EFD2730 NY PAS 2017-06-17 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8171538265 FBG3249 NY PAS 2017-02-10 38 4DSD HONDA 38-Failure to Display Muni Rec\n",
      "7640787490 GTS6000 NY PAS 2016-10-20 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8040135217 GTV5924 NY PAS 2016-11-19 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8543005826 GXG5042 NY PAS 2017-05-23 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8530358399 HLU6261 NY PAS 2017-04-17 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8329010144 HTV5783 PA PAS 2016-07-02 38 4DSD HONDA 38-Failure to Display Muni Rec\n",
      "7216384532 T712744C NY OMT 2017-03-07 38 SUBN HONDA 38-Failure to Display Muni Rec\n",
      "8239540910 EWM9132 NY PAS 2016-11-11 38 4DSD HYUND 38-Failure to Display Muni Rec\n",
      "8513268173 HAT7232 NY PAS 2017-05-27 38 SUBN HYUND 38-Failure to Display Muni Rec\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8478953528 JNB5044 PA PAS 2016-12-17 38 SUBN HYUND 38-Failure to Display Muni Rec\n",
      "8471611235 T13AZX NJ PAS 2016-10-10 38 4DSD HYUND 38-Failure to Display Muni Rec\n",
      "7015856128 GMU5413 NY PAS 2016-09-06 38 4DSD INFIN 38-Failure to Display Muni Rec\n",
      "8532505170 HAZ7926 NY PAS 2017-04-15 38 4DSD INFIN 38-Failure to Display Muni Rec\n",
      "8156045178 HLF3741 NY PAS 2016-12-21 38 4DSD INFIN 38-Failure to Display Muni Rec\n",
      "8477154788 AP656S NJ PAS 2017-02-07 38 REFG INTER 38-Failure to Display Muni Rec\n",
      "7992738184 63162MD NY COM 2016-10-24 38 VAN ISUZU 38-Failure to Display Muni Rec\n",
      "8488913308 GYV3087 NY PAS 2017-03-13 38 SUBN JEEP 38-Failure to Display Muni Rec\n",
      "8303532224 HAB4875 NY PAS 2017-02-01 38 SUBN JEEP 38-Failure to Display Muni Rec\n",
      "7172330286 MHM933 SC PAS 2017-01-18 38 SUBN KIA 38-Failure to Display Muni Rec\n",
      "8279018967 V41GCR NJ PAS 2016-08-13 38 SUBN KIA 38-Failure to Display Muni Rec\n",
      "8530104183 EMK4874 NY PAS 2017-03-21 38 4DSD LEXUS 38-Failure to Display Muni Rec\n",
      "8228552543 GEA2261 NY PAS 2017-04-27 38 4DSD LEXUS 38-Failure to Display Muni Rec\n",
      "8508407440 67171MD NY COM 2017-03-02 38 VAN ME/BE 38-Failure to Display Muni Rec\n",
      "7473540725 GDV9810 NY PAS 2017-02-11 38 SUBN ME/BE 38-Failure to Display Muni Rec\n",
      "8184542148 GVL6825 NY PAS 2016-07-27 38 SUBN ME/BE 38-Failure to Display Muni Rec\n",
      "7686795950 HKV4674 NY PAS 2017-02-14 38 SUBN ME/BE 38-Failure to Display Muni Rec\n",
      "8550508081 GYK6894 NY PAS 2017-05-22 38 SUBN MERCU 38-Failure to Display Muni Rec\n",
      "8031065469 20188MB NY COM 2016-08-03 38 VAN NISSA 38-Failure to Display Muni Rec\n",
      "8451034871 ECT9910 NY PAS 2017-03-08 38 SUBN NISSA 38-Failure to Display Muni Rec\n",
      "8558610137 FBB5153 NY PAS 2017-06-03 38 4DSD NISSA 38-Failure to Display Muni Rec\n",
      "8489508318 FGP8657 NY PAS 2017-01-03 38 SUBN NISSA 38-Failure to Display Muni Rec\n",
      "8358539046 GDV2141 NY PAS 2016-12-15 38 4DSD NISSA 38-Failure to Display Muni Rec\n",
      "7687172486 GPV3988 NY PAS 2016-08-05 38 4DSD NISSA 38-Failure to Display Muni Rec\n",
      "7536344478 HAL6563 NY PAS 2016-10-12 38 SUBN NISSA 38-Failure to Display Muni Rec\n",
      "8566256827 HBX4254 NY PAS 2017-06-22 38 4DSD NISSA 38-Failure to Display Muni Rec\n",
      "7238386082 HDV1381 NY PAS 2016-11-10 38 4DSD NISSA 38-Failure to Display Muni Rec\n",
      "7878306229 HFX5240 NY OMS 2016-08-26 38 SUBN NISSA 38-Failure to Display Muni Rec\n",
      "7466353927 HHT7133 NY PAS 2017-01-09 38 4DSD NISSA 38-Failure to Display Muni Rec\n",
      "7034595768 76TD28 NY MOT 2016-10-26 38 MCY NS/OT 38-Failure to Display Muni Rec\n",
      "8520571347 848SSCV CT CMB 2017-06-09 38 SUBN NS/OT 38-Failure to Display Muni Rec\n",
      "8289029433 85773JX NY COM 2016-08-20 38 DELV NS/OT 38-Failure to Display Muni Rec\n",
      "8329046527 JVN4312 PA PAS 2017-01-13 38 4DSD PLYMO 38-Failure to Display Muni Rec\n",
      "7725868070 HCM6889 NY PAS 2016-10-28 38 SUBN PORSC 38-Failure to Display Muni Rec\n",
      "8528153757 917029N NJ PAS 2017-03-17 38 4DSD SCION 38-Failure to Display Muni Rec\n",
      "7034261090 DND4427 NY PAS 2017-03-21 38 4DSD SUBAR 38-Failure to Display Muni Rec\n",
      "7310311681 973 NY VAS 2017-02-02 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "8071059808 2W13A NY OMT 2016-10-24 38 4DSD TOYOT 38-Failure to Display Muni Rec\n",
      "8516566730 9V12H NY OMT 2017-04-22 38 TAXI TOYOT 38-Failure to Display Muni Rec\n",
      "8170062536 EPF5214 NY PAS 2016-10-26 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "8562250776 FFL7741 NY PAS 2017-05-08 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "8504983146 FZH3835 NY PAS 2017-05-09 38 PICK TOYOT 38-Failure to Display Muni Rec\n",
      "8102014891 GLP9323 NY PAS 2016-10-24 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "8163093262 GZK4605 NY PAS 2017-01-20 38 4DSD TOYOT 38-Failure to Display Muni Rec\n",
      "8480572620 GZP8205 NY PAS 2017-03-28 38 4DSD TOYOT 38-Failure to Display Muni Rec\n",
      "8170080708 HHC5057 NY PAS 2017-01-14 38 4DSD TOYOT 38-Failure to Display Muni Rec\n",
      "8298024096 K70BCS NJ PAS 2016-10-22 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "8479916916 MH718 RI PAS 2017-03-18 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "7690764873 T672543C NY OMT 2016-10-18 38 SUBN TOYOT 38-Failure to Display Muni Rec\n",
      "8475000216 T677560C NY OMT 2016-10-26 38 4DSD TOYOT 38-Failure to Display Muni Rec\n",
      "8511274996 YCNZ15 NJ PAS 2017-05-16 38 PICK TOYOT 38-Failure to Display Muni Rec\n",
      "8546358047 T717493C NY OMT 2017-06-15 38 4DSD VOLKS 38-Failure to Display Muni Rec\n",
      "8532118252 B78AKY NJ PAS 2017-06-08 38 4DSD VOLVO 38-Failure to Display Muni Rec\n",
      "7029194834 CMMCK TX PAS 2016-11-04 38 4DSD VOLVO 38-Failure to Display Muni Rec\n",
      "8169543885 HHK8137 NY PAS 2016-09-14 38 SUBN VOLVO 38-Failure to Display Muni Rec\n",
      "8270554248 EXP9969 NY PAS 2017-01-21 40 4DSD BMW 40-Fire Hydrant\n",
      "8520655269 FWD5326 NY PAS 2017-03-07 40 SUBN BMW 40-Fire Hydrant\n",
      "8487577714 R5634P TN PAS 2017-02-22 40 4DSD BMW 40-Fire Hydrant\n",
      "8293078133 HGJ2021 NY PAS 2017-01-10 40 SUBN BUICK 40-Fire Hydrant\n",
      "8476754036 5733VQ ME PAS 2017-01-28 40 4DSD CHEVR 40-Fire Hydrant\n",
      "8524758790 62122MJ NY COM 2017-04-14 40 VAN CHEVR 40-Fire Hydrant\n",
      "8090532962 EUZ1312 NY PAS 2017-04-11 40 4DSD DODGE 40-Fire Hydrant\n",
      "7807866536 10992ME NY COM 2016-11-14 40 VAN FORD 40-Fire Hydrant\n",
      "8521411923 AH20097 AZ PAS 2017-04-22 40 VAN FORD 40-Fire Hydrant\n",
      "8486983800 C087382 CT PAS 2017-04-10 40 VAN FORD 40-Fire Hydrant\n",
      "7813974049 GLS7002 NY PAS 2016-09-09 40 SUBN FORD 40-Fire Hydrant\n",
      "8526650464 GXA7604 NY PAS 2017-02-24 40 2DSD FORD 40-Fire Hydrant\n",
      "7509978221 12127MJ NY COM 2017-02-27 40 VAN FRUEH 40-Fire Hydrant\n",
      "8521702024 67667MH NY COM 2017-02-22 40 DELV FRUEH 40-Fire Hydrant\n",
      "8503070157 85849MA NY COM 2017-04-05 40 DELV FRUEH 40-Fire Hydrant\n",
      "8100540172 88700JA NY COM 2017-02-23 40 DELV FRUEH 40-Fire Hydrant\n",
      "8530477870 17623MK NY COM 2017-06-12 40 VAN GMC 40-Fire Hydrant\n",
      "8553659872 36012JH NY COM 2017-06-05 40 VAN GMC 40-Fire Hydrant\n",
      "8283027748 FLJ1982 TX PAS 2016-07-29 40 4DSD HONDA 40-Fire Hydrant\n",
      "8533207992 FMF1924 NY PAS 2017-03-28 40 SUBN HONDA 40-Fire Hydrant\n",
      "8525513556 GBE4428 NY PAS 2017-04-17 40 4DSD HONDA 40-Fire Hydrant\n",
      "8490855328 HCR1371 NY PAS 2017-01-17 40 SUBN HONDA 40-Fire Hydrant\n",
      "1418809688 HKP7234 NY PAS 2017-02-10 40 SDN HONDA \n",
      "7615916161 VBS6310 VA PAS 2017-04-08 40 2DSD HYUND 40-Fire Hydrant\n",
      "8532406476 8CE6308 MD PAS 2017-06-02 40 4DSD INFIN 40-Fire Hydrant\n",
      "8260026995 41955JX NY COM 2016-10-28 40 DELV INTER 40-Fire Hydrant\n",
      "8479310108 AN294N NJ PAS 2017-03-15 40 DELV INTER 40-Fire Hydrant\n",
      "8564313893 HMJ8126 NY PAS 2017-06-26 40 SUBN JEEP 40-Fire Hydrant\n",
      "8537307087 FLN2294 NY PAS 2017-04-12 40 4DSD ME/BE 40-Fire Hydrant\n",
      "8562902573 HHB6458 NY PAS 2017-06-03 40 4DSD ME/BE 40-Fire Hydrant\n",
      "8515271692 22436JW NY COM 2017-05-02 40 DELV MITSU 40-Fire Hydrant\n",
      "1404820255 31535JU NY COM 2016-12-06 40 DELV MITSU \n",
      "1385822545 CWM3813 NY PAS 2016-08-14 40 SDN NISSA \n",
      "8429514260 GLC1162 NY PAS 2016-10-08 40 4DSD NISSA 40-Fire Hydrant\n",
      "1418357212 HGK5374 NY PAS 2017-05-09 40 SDN NISSA \n",
      "1418741530 HMN1703 NY PAS 2017-04-01 40 SUBN NISSA \n",
      "7628394670 YLC28F NJ PAS 2016-09-12 40 4DSD NISSA 40-Fire Hydrant\n",
      "8210526881 3MD9721 MD PAS 2016-10-11 40 SUBN PORSC 40-Fire Hydrant\n",
      "8521501067 2AVAF1 CT PAS 2017-02-15 40 2DSD SCION 40-Fire Hydrant\n",
      "8087547044 JONNAS NY SRF 2017-02-06 40 4DSD SUBAR 40-Fire Hydrant\n",
      "7170603627 GDE5084 NY PAS 2016-08-17 40 4DSD TOYOT 40-Fire Hydrant\n",
      "1411957532 GHR9886 NY PAS 2016-10-30 40 SDN TOYOT \n",
      "7036196488 HDS6837 NY PAS 2016-09-29 40 4DSD TOYOT 40-Fire Hydrant\n",
      "1413656420 T672371C NY PAS 2017-02-04 40 TAXI TOYOT \n",
      "1413609545 X20DCM NJ PAS 2016-08-03 40 SDN TOYOT \n",
      "8150083686 67754MC NY COM 2016-11-16 40 DELV UPS 40-Fire Hydrant\n",
      "8509669090 91656MC NY COM 2017-04-28 40 VAN WORKH 40-Fire Hydrant\n",
      "8491851975 98166MD NY COM 2016-12-08 42 VAN CHEVR 42-Exp. Muni-Mtr (Com. Mtr. Z)\n",
      "8480450563 21834ME NY COM 2016-11-21 42 VAN FORD 42-Exp. Muni-Mtr (Com. Mtr. Z)\n",
      "8107526170 57300MC NY COM 2016-09-08 42 VAN FORD 42-Exp. Muni-Mtr (Com. Mtr. Z)\n",
      "8479406173 52880MH NY COM 2017-01-26 42 VAN FRUEH 42-Exp. Muni-Mtr (Com. Mtr. Z)\n",
      "8038240170 35079MD NY COM 2016-12-08 42 VAN NS/OT 42-Exp. Muni-Mtr (Com. Mtr. Z)\n",
      "8481615432 XDGW94 NJ PAS 2017-06-08 42 DELV NS/OT 42-Exp. Muni-Mtr (Com. Mtr. Z)\n",
      "8374006640 FZX8942 NY PAS 2016-08-26 46 4DSD ACURA 46A-Double Parking (Non-COM)\n",
      "8558750191 GSH2040 NY PAS 2017-04-20 46 4DSD ACURA 46A-Double Parking (Non-COM)\n",
      "8502856637 GGL9484 NY PAS 2017-02-10 46 4DSD AUDI 46A-Double Parking (Non-COM)\n",
      "1420319401 KKN4822 PA PAS 2017-05-15 46 SUBN BUICK \n",
      "7067929763 17626MK NY COM 2017-01-31 46 VAN CHEVR 46B-Double Parking (Com-100Ft)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1387522700 71017JM NY COM 2016-08-25 46 VAN CHEVR \n",
      "8008621527 HFP7192 NY PAS 2016-10-25 46 VAN CHEVR 46A-Double Parking (Non-COM)\n",
      "1413687738 25570MC NY COM 2016-09-06 46 DELV DODGE \n",
      "8513917291 33147MK NY COM 2017-06-27 46 VAN DODGE 46A-Double Parking (Non-COM)\n",
      "8505564479 99828MC NY COM 2017-03-07 46 VAN DODGE 46B-Double Parking (Com-100Ft)\n",
      "8513554716 XWD5801 VA PAS 2017-03-03 46 SUBN DODGE 46A-Double Parking (Non-COM)\n",
      "1420122800 AB80443 CT PAS 2017-03-13 46 SDN FIAT \n",
      "8472012591 48768JZ NY COM 2016-11-09 46 VAN FORD 46B-Double Parking (Com-100Ft)\n",
      "1401381406 EUM7025 NY PAS 2016-11-14 46 SUBN FORD \n",
      "1417599716 12203MG NY COM 2016-12-01 46 VAN FRUEH \n",
      "8019072664 12211MG NY COM 2016-11-11 46 VAN FRUEH 46B-Double Parking (Com-100Ft)\n",
      "8429513220 12246MG NY COM 2016-10-04 46 VAN FRUEH 46B-Double Parking (Com-100Ft)\n",
      "8470521172 28672MH NY COM 2016-11-21 46 VAN FRUEH 46B-Double Parking (Com-100Ft)\n",
      "1414783784 30182JF NY COM 2016-11-25 46 VAN FRUEH \n",
      "8267055393 76253JY NY COM 2016-10-10 46 DELV FRUEH 46B-Double Parking (Com-100Ft)\n",
      "8513153333 95707MC NY COM 2017-02-25 46 VAN FRUEH 46B-Double Parking (Com-100Ft)\n",
      "8504710749 AB157N NJ PAS 2017-03-03 46 DELV FRUEH 46B-Double Parking (Com-100Ft)\n",
      "8506024420 XBPZ81 NJ PAS 2017-04-19 46 DELV HIN 46B-Double Parking (Com-100Ft)\n",
      "8544760181 GPN6161 NY PAS 2017-06-20 46 4DSD HONDA 46A-Double Parking (Non-COM)\n",
      "8519154645 GXC2952 NY PAS 2017-03-07 46 SUBN HONDA 46A-Double Parking (Non-COM)\n",
      "8554356639 HAL3201 NY PAS 2017-05-23 46 4DSD HONDA 46A-Double Parking (Non-COM)\n",
      "8537709475 HEJ2020 NY PAS 2017-05-05 46 4DSD HONDA 46A-Double Parking (Non-COM)\n",
      "1415749504 85795MC NY COM 2016-10-29 46  ISUZU \n",
      "8524957104 90371MC NY COM 2017-04-24 46 REFG ISUZU 46B-Double Parking (Com-100Ft)\n",
      "8432500124 GXR4201 NY PAS 2016-07-20 46 SUBN JEEP 46A-Double Parking (Non-COM)\n",
      "8539607141 49783MA NY COM 2017-05-05 46 DELV KENWO 46B-Double Parking (Com-100Ft)\n",
      "1415396371 GDM8277 NY PAS 2017-05-10 46 SDN LEXUS \n",
      "8422555566 HDF6978 NY PAS 2017-02-25 46 SUBN ME/BE 46A-Double Parking (Non-COM)\n",
      "8575301974 65936MK NY COM 2017-06-14 46 VAN MITSU 46B-Double Parking (Com-100Ft)\n",
      "1416259892 FFY2020 NY PAS 2016-10-20 46 SDN MITSU \n",
      "8473154551 XS465D NJ PAS 2016-10-27 46 DELV MITSU 46B-Double Parking (Com-100Ft)\n",
      "8484520614 XU522N NJ PAS 2017-04-07 46 DELV MITSU 46B-Double Parking (Com-100Ft)\n",
      "8525507428 HBN8919 NY PAS 2017-03-25 46 4DSD NISSA 46A-Double Parking (Non-COM)\n",
      "8050574052 49731MA NY COM 2016-12-30 46 DELV NS/OT 46B-Double Parking (Com-100Ft)\n",
      "8503162726 GOFDX NY COM 2017-03-15 46 VAN NS/OT 46B-Double Parking (Com-100Ft)\n",
      "8524064390 PRF4639 GA PAS 2017-04-28 46 SUBN NS/OT 46A-Double Parking (Non-COM)\n",
      "8378015798 DYBL66 FL PAS 2016-08-09 46 SUBN ROVER 46A-Double Parking (Non-COM)\n",
      "8503278601 HPW9117 NY PAS 2017-05-27 46 SUBN ROVER 46A-Double Parking (Non-COM)\n",
      "1414975570 42447MH NY COM 2016-10-04 46 P-U TOYOT \n",
      "7497389804 DDJ8252 NY PAS 2016-11-16 46 SUBN TOYOT 46A-Double Parking (Non-COM)\n",
      "7751566700 HJV8807 NY PAS 2016-12-27 46 4DSD TOYOT 46A-Double Parking (Non-COM)\n",
      "7001431515 T665895C NY OMT 2016-08-09 46 4DSD TOYOT 46A-Double Parking (Non-COM)\n",
      "8518100136 T682917C NY OMT 2017-02-15 46 SUBN TOYOT 46A-Double Parking (Non-COM)\n",
      "8521262474 32353PC NY IRP 2017-04-06 46 REFG UD 46B-Double Parking (Com-100Ft)\n",
      "1416119292 TRW42B NJ PAS 2016-10-09 46 TLR UTILI \n",
      "1406832248 FJA2553 NY PAS 2016-10-07 46 SDN VOLVO \n",
      "[('summons_number', '1406925068'), ('plate_id', '19358JU'), ('registration_state', '99'), ('plate_type', 'COM'), ('issue_date', '8/23/2016'), ('violation_code', '46'), ('vehicle_body_type', 'DELV'), ('vehicle_make', ''), ('violation_description', '')]\n",
      "\n",
      "[('summons_number', '8546468965'), ('plate_id', '37489BB'), ('registration_state', 'NY'), ('plate_type', 'OMR'), ('issue_date', '6/12/2017'), ('violation_code', '46'), ('vehicle_body_type', 'BUS'), ('vehicle_make', ''), ('violation_description', '46A-Double Parking (Non-COM)')]\n",
      "\n",
      "[('summons_number', '1406927442'), ('plate_id', 'BLANKPLATE'), ('registration_state', '99'), ('plate_type', '999'), ('issue_date', '8/20/2016'), ('violation_code', '46'), ('vehicle_body_type', 'SDN'), ('vehicle_make', ''), ('violation_description', '')]\n",
      "\n",
      "8335524634 55219MA NY COM 2016-10-22 47 VAN DODGE 47-Double PKG-Midtown\n",
      "8126033526 67815MC NY COM 2016-10-24 47 VAN FORD 47-Double PKG-Midtown\n",
      "8483357380 70728MD NY COM 2017-02-03 47 VAN FORD 47-Double PKG-Midtown\n",
      "8479610785 31362MG NY COM 2017-01-05 47 DELV FRUEH 47-Double PKG-Midtown\n",
      "8482178982 76691MH NY COM 2017-04-24 47 VAN FRUEH 47-Double PKG-Midtown\n",
      "8483777563 XDSL81 NJ PAS 2017-06-01 47 DELV FRUEH 47-Double PKG-Midtown\n",
      "8476904253 97036JE NY COM 2017-01-23 47 VAN GMC 47-Double PKG-Midtown\n",
      "8103547682 409507 IN PAS 2016-07-21 47 DELV INTER 47-Double PKG-Midtown\n",
      "8479509466 36488ME NY COM 2017-02-10 47 UTIL INTER 47-Double PKG-Midtown\n",
      "8498015157 69975MJ NY COM 2017-06-13 47 DELV INTER 47-Double PKG-Midtown\n",
      "7880363683 PAL7145 MN PAS 2016-09-26 47 DELV INTER 47-Double PKG-Midtown\n",
      "7924516268 34555MD NY COM 2016-11-09 47 REFG ISUZU 47-Double PKG-Midtown\n",
      "8477312801 73441MG NY COM 2017-04-01 47 DELV ISUZU 47-Double PKG-Midtown\n",
      "8371503842 13041MJ NY COM 2016-07-08 47 DELV KENWO 47-Double PKG-Midtown\n",
      "8371503647 14224MJ NY COM 2016-07-07 47 DELV ME/BE 47-Double PKG-Midtown\n",
      "8497957076 55507JZ NY COM 2017-03-20 47 DELV MITSU 47-Double PKG-Midtown\n",
      "8478629828 66623ME NY COM 2017-06-14 47 REFG MITSU 47-Double PKG-Midtown\n",
      "8120016294 68218MG NY COM 2016-12-13 47 VAN NS/OT 47-Double PKG-Midtown\n",
      "1413231070 28606MH NY COM 2016-08-19 48 VAN FORD \n",
      "8523502270 41990JX NY COM 2017-03-03 48 VAN FORD 48-Bike Lane\n",
      "8485655590 OYA8199 NJ PAS 2017-02-16 48 BUS FORD 48-Bike Lane\n",
      "1420960260 66604MB NY COM 2017-05-11 48 VAN GMCQ \n",
      "8377006390 GCR2084 NY PAS 2016-07-19 48 4DSD HONDA 48-Bike Lane\n",
      "7577859382 GRH9256 NY PAS 2016-12-02 48 4DSD HONDA 48-Bike Lane\n",
      "8122530205 95139JC NY COM 2017-01-05 48 DELV INTER 48-Bike Lane\n",
      "8254538943 390HRH OR PAS 2016-09-02 50 SUBN FORD 50-Crosswalk\n",
      "8518670070 96170MA NY COM 2017-06-05 50 VAN FRUEH 50-Crosswalk\n",
      "1410899070 GWG5875 NY PAS 2016-11-01 50 SDN HONDA \n",
      "1413790264 JFE0579 PA PAS 2016-09-10 50 SDN HONDA \n",
      "1414785495 FJL6037 NY PAS 2016-08-17 50 SDN HYUND \n",
      "7809507916 34719MG NY COM 2016-12-08 50 DELV INTER 50-Crosswalk\n",
      "7499593060 XBYW36 NJ PAS 2016-07-22 50 DELV ISUZU 50-Crosswalk\n",
      "8466021980 GSC6098 NY PAS 2016-12-27 50 4DSD NISSA 50-Crosswalk\n",
      "8543401689 HCP8932 NY PAS 2017-04-18 50 4DSD NISSA 50-Crosswalk\n",
      "8162015656 GSS803 VT PAS 2016-09-01 50 4DSD TOYOT 50-Crosswalk\n",
      "8526919210 GZD7447 NY PAS 2017-04-12 50 4DSD TOYOT 50-Crosswalk\n",
      "8506053195 25868MB NY COM 2017-01-25 51 VAN FORD 51-Sidewalk\n",
      "8520767310 GHN6806 NY PAS 2017-05-26 51 SUBN SAAB 51-Sidewalk\n",
      "7079854404 T656205C NY OMT 2017-01-28 51 4DSD TOYOT 51-Sidewalk\n",
      "1421055820 GAR2279 NY PAS 2017-06-10 52 SDN FORD \n",
      "7085899554 GUZ4334 NY PAS 2016-10-13 53 SUBN ACURA 53-Safety Zone\n",
      "8478553514 XCMA58 NJ PAS 2016-12-15 53 DELV HINO 53-Safety Zone\n",
      "8546101425 DF932Z NY PAS 2017-04-10 53 SUBN LEXUS 53-Safety Zone\n",
      "7007488663 VFP7291 VA PAS 2017-03-02 53 4DSD ME/BE 53-Safety Zone\n",
      "1402409825 869ZR9 MA 999 2016-10-15 53 SUBN SATUR \n",
      "8506603031 2383103 IN PAS 2017-02-01 53 TRAC VOLVO 53-Safety Zone\n",
      "8480309064 51771JW NY COM 2017-01-26 64 VAN INTER \"64-No STD Ex Con/DPL\n",
      "8162054819 EW866X NJ PAS 2017-01-29 68 4DSD NISSA 68-Not Pkg. Comp. w Psted Sign\n",
      "8343032536 4CMH482 CA PAS 2016-10-03 68 SUBN SUBAR 68-Not Pkg. Comp. w Psted Sign\n",
      "8084034959 ASW2109 NY PAS 2016-12-20 68 4DSD TOYOT 68-Not Pkg. Comp. w Psted Sign\n",
      "8066506089 12047JY NY COM 2016-07-01 69 VAN CHEVR 69-Failure to Disp Muni Recpt\n",
      "8483275156 57309ME NY COM 2017-06-07 69 PICK DODGE 69-Failure to Disp Muni Recpt\n",
      "8481256500 21530JX NY COM 2017-01-30 69 VAN FORD 69-Failure to Disp Muni Recpt\n",
      "8513914599 65572JU NY COM 2017-06-09 69 VAN FORD 69-Failure to Disp Muni Recpt\n",
      "8479417420 AT459E NJ PAS 2017-04-13 69 DELV FRUEH 69-Failure to Disp Muni Recpt\n",
      "8479216670 D705HT TN PAS 2017-04-11 69 DELV FRUEH 69-Failure to Disp Muni Recpt\n",
      "8471301842 XZ223J NJ PAS 2016-08-30 69 DELV FRUEH 69-Failure to Disp Muni Recpt\n",
      "7268771216 63383JT NY COM 2016-07-27 69 VAN GMC 69-Failure to Disp Muni Recpt\n",
      "8476768746 91599ME NY COM 2017-04-13 69 REFG HIN 69-Failure to Disp Muni Recpt\n",
      "7868300310 37033JV NY COM 2016-11-21 69 DELV INTER 69-Failure to Disp Muni Recpt\n",
      "8077552250 AS299T NJ PAS 2016-10-14 69 DELV INTER 69-Failure to Disp Muni Recpt\n",
      "8116524124 XDYD73 NJ PAS 2016-10-06 69 DELV ISUZU 69-Failure to Disp Muni Recpt\n",
      "7393476988 GGR9506 NY PAS 2016-07-20 70 4DSD AUDI 70A-Reg. Sticker Expired (NYS)\n",
      "8527214490 GWG7018 NY PAS 2017-05-16 70 SUBN BMW 70A-Reg. Sticker Expired (NYS)\n",
      "7077031019 GNV8363 NY PAS 2016-09-07 70 SUBN CADIL 70A-Reg. Sticker Expired (NYS)\n",
      "8522772708 GWH8469 NY PAS 2017-04-20 70 SUBN CHRYS 70A-Reg. Sticker Expired (NYS)\n",
      "8535702763 GTE6420 NY PAS 2017-03-24 70 SUBN FORD 70A-Reg. Sticker Expired (NYS)\n",
      "7705894520 GYP6735 NY OMS 2016-10-02 70 SUBN FORD 70A-Reg. Sticker Expired (NYS)\n",
      "8535150079 HMC7627 NY PAS 2017-03-08 70 4DSD HYUND 70A-Reg. Sticker Expired (NYS)\n",
      "7541990206 HGL9860 NY PAS 2017-02-18 70 SUBN JEEP 70A-Reg. Sticker Expired (NYS)\n",
      "7074250855 GBV6820 NY PAS 2016-11-05 70 SUBN ME/BE 70A-Reg. Sticker Expired (NYS)\n",
      "8419012245 GVM6317 NY PAS 2017-01-27 70 4DSD ME/BE 70A-Reg. Sticker Expired (NYS)\n",
      "8552067018 ACS8210 NY PAS 2017-06-23 70 SUBN NISSA 70A-Reg. Sticker Expired (NYS)\n",
      "8490111753 GVH9098 NY PAS 2017-01-25 70 4DSD NISSA 70A-Reg. Sticker Expired (NYS)\n",
      "1423568710 GPG1213 NY PAS 2017-03-19 70 SDN SUBAR \n",
      "8363531900 GTC2970 NY PAS 2017-02-08 70 4DSD TOYOT 70A-Reg. Sticker Expired (NYS)\n",
      "8282021635 FBD7363 NY PAS 2016-09-10 71 4DSD ACURA 71A-Insp Sticker Expired (NYS)\n",
      "8551100002 HLA6845 NY PAS 2017-04-05 71 4DSD BMW 71-Insp. Sticker Missing (NYS\n",
      "8471891440 42530MG NY COM 2017-02-28 71 DELV CHEVR 71A-Insp Sticker Expired (NYS)\n",
      "8555150875 ETF9022 NY PAS 2017-05-02 71 SUBN CHEVR 71A-Insp Sticker Expired (NYS)\n",
      "8188582906 GMT8516 NY PAS 2016-11-01 71 PICK CHEVR 71A-Insp Sticker Expired (NYS)\n",
      "8206527321 HCD4100 NY PAS 2016-11-01 71 SUBN CHEVR 71A-Insp Sticker Expired (NYS)\n",
      "8519013259 HNY7165 NY PAS 2017-05-16 71 SUBN CHEVR 71-Insp. Sticker Missing (NYS\n",
      "8145014311 HJV3061 NY PAS 2016-12-13 71 SUBN CHRYS 71A-Insp Sticker Expired (NYS)\n",
      "8548503257 GWB7005 NY PAS 2017-05-01 71 4DSD DODGE 71A-Insp Sticker Expired (NYS)\n",
      "8235044468 FXX6545 NY PAS 2016-10-19 71 SUBN FORD 71A-Insp Sticker Expired (NYS)\n",
      "7491184224 GAM6902 NY PAS 2017-04-07 71 SUBN FORD 71A-Insp Sticker Expired (NYS)\n",
      "8559052999 GMR3386 NY PAS 2017-05-13 71 SUBN FORD 71A-Insp Sticker Expired (NYS)\n",
      "8514728416 GYP8889 NY PAS 2017-05-28 71 SUBN FORD 71A-Insp Sticker Expired (NYS)\n",
      "7162362357 GCE5560 NY PAS 2016-08-05 71 2DSD HONDA 71A-Insp Sticker Expired (NYS)\n",
      "8486910511 GXC5916 NY PAS 2017-02-13 71 4DSD HONDA 71A-Insp Sticker Expired (NYS)\n",
      "7959802142 HAE6612 NY PAS 2016-11-22 71 4DSD HONDA 71A-Insp Sticker Expired (NYS)\n",
      "8474512311 HLA6246 NY PAS 2016-12-15 71 4DSD HONDA 71-Insp. Sticker Missing (NYS\n",
      "1405823926 GDV1998 NY PAS 2017-05-01 71 SUBN HYUND \n",
      "8467031128 R9D509 NY PAS 2016-12-24 71 SUBN HYUND 71A-Insp Sticker Expired (NYS)\n",
      "8378044166 HJV2326 NY PAS 2016-10-18 71 4DSD INFIN 71A-Insp Sticker Expired (NYS)\n",
      "8535421774 EGZ5296 NY PAS 2017-05-21 71 SUBN JEEP 71A-Insp Sticker Expired (NYS)\n",
      "8263642668 HEA6308 NY PAS 2017-02-16 71 SUBN JEEP 71A-Insp Sticker Expired (NYS)\n",
      "7067047705 HFF1432 NY PAS 2016-09-23 71 SUBN JEEP 71A-Insp Sticker Expired (NYS)\n",
      "8168032202 GZN5776 NY PAS 2016-08-03 71 4DSD LEXUS 71A-Insp Sticker Expired (NYS)\n",
      "8507861787 HMY3697 NY PAS 2017-04-10 71 SUBN LEXUS 71A-Insp Sticker Expired (NYS)\n",
      "8297047957 GUV7315 NY PAS 2016-12-03 71 4DSD LINCO 71A-Insp Sticker Expired (NYS)\n",
      "8472853342 HJN6543 NY PAS 2016-10-04 71 2DSD LINCO 71A-Insp Sticker Expired (NYS)\n",
      "8524860388 HGR2303 NY PAS 2017-04-10 71 CONV ME/BE 71A-Insp Sticker Expired (NYS)\n",
      "8561753377 GWY8527 NY PAS 2017-05-26 71 SUBN MERCU 71A-Insp Sticker Expired (NYS)\n",
      "8544876754 GBE4270 NY PAS 2017-05-24 71 4DSD NISSA 71A-Insp Sticker Expired (NYS)\n",
      "7803960030 HBU4265 NY PAS 2017-01-07 71 4DSD NISSA 71A-Insp Sticker Expired (NYS)\n",
      "7492597289 HDF5609 NY PAS 2016-08-19 71 4DSD NISSA 71A-Insp Sticker Expired (NYS)\n",
      "8400523477 HKT1200 NY PAS 2016-11-28 71 4DSD NISSA 71-Insp. Sticker Missing (NYS\n",
      "7646792536 T686872C NY OMT 2016-09-14 71 4DSD NISSA 71A-Insp Sticker Expired (NYS)\n",
      "8208026335 DHW7141 NY PAS 2016-08-05 71 2DSD NS/OT 71A-Insp Sticker Expired (NYS)\n",
      "7959796476 GPY8489 NY PAS 2016-10-06 71 SUBN ROVER 71A-Insp Sticker Expired (NYS)\n",
      "8509455028 34632BB NY OMR 2017-02-12 71 BUS STAR 71A-Insp Sticker Expired (NYS)\n",
      "8393022400 HFP5696 NY PAS 2016-11-16 71 SUBN SUBAR 71A-Insp Sticker Expired (NYS)\n",
      "8525217207 HGM9849 NY PAS 2017-05-03 71 SUBN SUBAR 71A-Insp Sticker Expired (NYS)\n",
      "8562558047 CWP4893 NY PAS 2017-06-01 71 SUBN TOYOT 71A-Insp Sticker Expired (NYS)\n",
      "8236037095 GMR8112 NY PAS 2016-09-17 71 2DSD TOYOT 71A-Insp Sticker Expired (NYS)\n",
      "8514463690 GMZ9712 NY PAS 2017-03-30 71 4DSD TOYOT 71A-Insp Sticker Expired (NYS)\n",
      "8358550790 HDY4158 NY PAS 2017-02-18 71 4DSD TOYOT 71A-Insp Sticker Expired (NYS)\n",
      "7959486440 GYF2052 NY PAS 2016-07-07 71 4DSD VOLKS 71-Insp. Sticker Missing (NYS\n",
      "8300538318 HFR6545 NY PAS 2016-10-31 71 4DSD VOLVO 71-Insp. Sticker Missing (NYS\n",
      "8523013120 HPN9774 NY PAS 2017-04-06 74 4DSD CHEVR 74-Missing Display Plate\n",
      "7008336767 HWL4734 PA PAS 2017-01-14 74 4DSD CHEVR 74A-Improperly Displayed Plate\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8397514636 FYW3850 NY PAS 2016-10-22 74 SUBN FORD 74A-Improperly Displayed Plate\n",
      "8528912840 HNY5206 NY PAS 2017-04-21 74 SUBN GMC 74A-Improperly Displayed Plate\n",
      "8511501113 FBP6836 NY PAS 2017-02-16 74 SUBN HONDA 74-Missing Display Plate\n",
      "8276551890 HJR4081 NY PAS 2017-01-07 74 SUBN HONDA 74A-Improperly Displayed Plate\n",
      "8214550531 HJY2207 NY PAS 2017-03-09 74 4DSD HYUND 74-Missing Display Plate\n",
      "8487469012 27527ME NY COM 2017-01-27 74 DELV INTER 74-Missing Display Plate\n",
      "8034780236 HCD3158 NY PAS 2016-09-02 74 SUBN KIA 74A-Improperly Displayed Plate\n",
      "8545052455 HMK1149 NY PAS 2017-06-07 74 4DSD ME/BE 74-Missing Display Plate\n",
      "1411263467 BLANKPLATE 99 999 2017-02-13 74 SDN NISSA \n",
      "8540001550 HLA4803 NY PAS 2017-03-23 74 4DSD SAAB 74-Missing Display Plate\n",
      "8556155431 HFB9919 NY PAS 2017-05-26 75 4DSD DODGE 75-No Match-Plate/Reg. Sticker\n",
      "8394016790 31690BB NY OMR 2016-09-06 77 BUS AM/T 77-Parked Bus (exc desig area)\n",
      "1419472306 56090BA NY OMR 2017-02-20 77 BUS INTER \n",
      "8363508688 97256 MA APP 2016-08-13 77 BUS NS/OT 77-Parked Bus (exc desig area)\n",
      "1407740258 2513JMG NY COM 2017-01-11 78 DELV FRUEH \n",
      "8081047670 AG84195 AZ PAS 2016-09-01 78 DELV GMC 78-Nighttime PKG on Res Street\n",
      "8357010039 ZBK5659 PA PAS 2016-09-16 78 FLAT NS/OT 78-Nighttime PKG on Res Street\n",
      "1408164401 GCP8663 NY PAS 2016-09-30 80 SUBN CHEVR \n",
      "7065087220 35989MJ NY COM 2016-08-28 82 VAN CHEVR 82-Unaltered Commerc Vehicle\n",
      "8472028628 80921MH NY COM 2017-01-30 82 VAN CHEVR 82-Unaltered Commerc Vehicle\n",
      "8413507250 XCGT11 NJ PAS 2016-10-18 82 PICK CHEVR 82-Unaltered Commerc Vehicle\n",
      "8498413898 2028133 IN PAS 2017-05-24 84 DELV FRUEH 84-Platform lifts in low posit\n",
      "8484405837 2028134 IN PAS 2017-02-15 84 DELV FRUEH 84-Platform lifts in low posit\n",
      "8040125108 AT985A NJ PAS 2016-08-29 84 DELV FRUEH 84-Platform lifts in low posit\n",
      "8521821979 XJX4470 PA PAS 2017-05-18 84 TR/C FRUEH 84-Platform lifts in low posit\n",
      "7662741072 XY237D NJ PAS 2016-08-09 84 DELV HINO 84-Platform lifts in low posit\n",
      "8529157072 2380604 IN PAS 2017-03-29 84 DELV INTER 84-Platform lifts in low posit\n",
      "8354508808 21239MG NY COM 2016-09-09 84 DELV MI/F 84-Platform lifts in low posit\n",
      "1414702700 AT785J NJ PAS 2016-11-27 85 TRAC FRUEH \n",
      "8466533837 XANK50 NJ PAS 2017-04-29 85 DELV HIN 85-Storage-3 hour Commercial\n",
      "8525168063 HBN8474 NY PAS 2017-05-30 91 SUBN HONDA 91-Veh for Sale (Dealer Only)\n",
      "1420730010 GFW3620 NY PAS 2017-06-10 98 SUBN CHEVR \n",
      "1414049870 EJS4309 NY PAS 2016-08-05 98 SDN NISSA \n",
      "1420795430 HBS5720 NY PAS 2017-04-18 98 SDN NISSA \n"
     ]
    }
   ],
   "source": [
    "for row in read_data():\n",
    "    parsed_row = parse_row(row)\n",
    "    if parsed_row is None:\n",
    "        print(list(zip(column_names, row.strip('\\n').split(','))), end='\\n\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "OK, so mostly the data is clean. Looks like we have a few rows without descriptions. \n",
    "Technically there's a whole lot more validation and cleaning we should do. For example, it looks like the states are not always proper state abbreviations (like 99 in some records, etc). But this is good enough for now."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Creating an Iterator for the data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, let's create an iterator to easily iterate over the cleaned up and structured data in the file, skipping `None` rows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def parsed_data():\n",
    "    for row in read_data():\n",
    "        parsed = parse_row(row)\n",
    "        if parsed:\n",
    "            yield parsed"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's test it out by iterating a few times:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4006478550 VAD7274 VA PAS 2016-10-05 5 4D BMW BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006478550, plate_id='VAD7274', registration_state='VA', plate_type='PAS', issue_date=datetime.date(2016, 10, 5), violation_code=5, vehicle_body_type='4D', vehicle_make='BMW', violation_description='BUS LANE VIOLATION')\n",
      "4006462396 22834JK NY COM 2016-09-30 5 VAN CHEVR BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006462396, plate_id='22834JK', registration_state='NY', plate_type='COM', issue_date=datetime.date(2016, 9, 30), violation_code=5, vehicle_body_type='VAN', vehicle_make='CHEVR', violation_description='BUS LANE VIOLATION')\n",
      "4007117810 21791MG NY COM 2017-04-10 5 VAN DODGE BUS LANE VIOLATION\n",
      "Ticket(summons_number=4007117810, plate_id='21791MG', registration_state='NY', plate_type='COM', issue_date=datetime.date(2017, 4, 10), violation_code=5, vehicle_body_type='VAN', vehicle_make='DODGE', violation_description='BUS LANE VIOLATION')\n",
      "4006265037 FZX9232 NY PAS 2016-08-23 5 SUBN FORD BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006265037, plate_id='FZX9232', registration_state='NY', plate_type='PAS', issue_date=datetime.date(2016, 8, 23), violation_code=5, vehicle_body_type='SUBN', vehicle_make='FORD', violation_description='BUS LANE VIOLATION')\n",
      "4006535600 N203399C NY OMT 2016-10-19 5 SUBN FORD BUS LANE VIOLATION\n",
      "Ticket(summons_number=4006535600, plate_id='N203399C', registration_state='NY', plate_type='OMT', issue_date=datetime.date(2016, 10, 19), violation_code=5, vehicle_body_type='SUBN', vehicle_make='FORD', violation_description='BUS LANE VIOLATION')\n"
     ]
    }
   ],
   "source": [
    "parsed_rows = parsed_data()\n",
    "for _ in range(5):\n",
    "    print(next(parsed_rows))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
